Commit 65d22e91 authored by Kent Overstreet's avatar Kent Overstreet

bcache: Move spinlock into struct time_stats

Minor cleanup.
Signed-off-by: default avatarKent Overstreet <kmo@daterainc.com>
parent 8aee1220
...@@ -666,11 +666,9 @@ struct cache_set { ...@@ -666,11 +666,9 @@ struct cache_set {
unsigned congested_read_threshold_us; unsigned congested_read_threshold_us;
unsigned congested_write_threshold_us; unsigned congested_write_threshold_us;
spinlock_t sort_time_lock;
struct time_stats sort_time; struct time_stats sort_time;
struct time_stats btree_gc_time; struct time_stats btree_gc_time;
struct time_stats btree_split_time; struct time_stats btree_split_time;
spinlock_t btree_read_time_lock;
struct time_stats btree_read_time; struct time_stats btree_read_time;
struct time_stats try_harder_time; struct time_stats try_harder_time;
......
...@@ -1077,11 +1077,8 @@ static void __btree_sort(struct btree *b, struct btree_iter *iter, ...@@ -1077,11 +1077,8 @@ static void __btree_sort(struct btree *b, struct btree_iter *iter,
if (b->written) if (b->written)
bset_build_written_tree(b); bset_build_written_tree(b);
if (!start) { if (!start)
spin_lock(&b->c->sort_time_lock);
bch_time_stats_update(&b->c->sort_time, start_time); bch_time_stats_update(&b->c->sort_time, start_time);
spin_unlock(&b->c->sort_time_lock);
}
} }
void bch_btree_sort_partial(struct btree *b, unsigned start) void bch_btree_sort_partial(struct btree *b, unsigned start)
...@@ -1128,9 +1125,7 @@ void bch_btree_sort_into(struct btree *b, struct btree *new) ...@@ -1128,9 +1125,7 @@ void bch_btree_sort_into(struct btree *b, struct btree *new)
btree_mergesort(b, new->sets->data, &iter, false, true); btree_mergesort(b, new->sets->data, &iter, false, true);
spin_lock(&b->c->sort_time_lock);
bch_time_stats_update(&b->c->sort_time, start_time); bch_time_stats_update(&b->c->sort_time, start_time);
spin_unlock(&b->c->sort_time_lock);
bkey_copy_key(&new->key, &b->key); bkey_copy_key(&new->key, &b->key);
new->sets->size = 0; new->sets->size = 0;
......
...@@ -317,10 +317,7 @@ void bch_btree_node_read(struct btree *b) ...@@ -317,10 +317,7 @@ void bch_btree_node_read(struct btree *b)
goto err; goto err;
bch_btree_node_read_done(b); bch_btree_node_read_done(b);
spin_lock(&b->c->btree_read_time_lock);
bch_time_stats_update(&b->c->btree_read_time, start_time); bch_time_stats_update(&b->c->btree_read_time, start_time);
spin_unlock(&b->c->btree_read_time_lock);
return; return;
err: err:
......
...@@ -1435,9 +1435,13 @@ struct cache_set *bch_cache_set_alloc(struct cache_sb *sb) ...@@ -1435,9 +1435,13 @@ struct cache_set *bch_cache_set_alloc(struct cache_sb *sb)
init_waitqueue_head(&c->try_wait); init_waitqueue_head(&c->try_wait);
init_waitqueue_head(&c->bucket_wait); init_waitqueue_head(&c->bucket_wait);
closure_init_unlocked(&c->uuid_write); closure_init_unlocked(&c->uuid_write);
spin_lock_init(&c->sort_time_lock);
mutex_init(&c->sort_lock); mutex_init(&c->sort_lock);
spin_lock_init(&c->btree_read_time_lock);
spin_lock_init(&c->sort_time.lock);
spin_lock_init(&c->btree_gc_time.lock);
spin_lock_init(&c->btree_split_time.lock);
spin_lock_init(&c->btree_read_time.lock);
spin_lock_init(&c->try_harder_time.lock);
bch_moving_init_cache_set(c); bch_moving_init_cache_set(c);
......
...@@ -168,10 +168,14 @@ int bch_parse_uuid(const char *s, char *uuid) ...@@ -168,10 +168,14 @@ int bch_parse_uuid(const char *s, char *uuid)
void bch_time_stats_update(struct time_stats *stats, uint64_t start_time) void bch_time_stats_update(struct time_stats *stats, uint64_t start_time)
{ {
uint64_t now = local_clock(); uint64_t now, duration, last;
uint64_t duration = time_after64(now, start_time)
spin_lock(&stats->lock);
now = local_clock();
duration = time_after64(now, start_time)
? now - start_time : 0; ? now - start_time : 0;
uint64_t last = time_after64(now, stats->last) last = time_after64(now, stats->last)
? now - stats->last : 0; ? now - stats->last : 0;
stats->max_duration = max(stats->max_duration, duration); stats->max_duration = max(stats->max_duration, duration);
...@@ -188,6 +192,8 @@ void bch_time_stats_update(struct time_stats *stats, uint64_t start_time) ...@@ -188,6 +192,8 @@ void bch_time_stats_update(struct time_stats *stats, uint64_t start_time)
} }
stats->last = now ?: 1; stats->last = now ?: 1;
spin_unlock(&stats->lock);
} }
/** /**
......
...@@ -378,6 +378,7 @@ ssize_t bch_snprint_string_list(char *buf, size_t size, const char * const list[ ...@@ -378,6 +378,7 @@ ssize_t bch_snprint_string_list(char *buf, size_t size, const char * const list[
ssize_t bch_read_string_list(const char *buf, const char * const list[]); ssize_t bch_read_string_list(const char *buf, const char * const list[]);
struct time_stats { struct time_stats {
spinlock_t lock;
/* /*
* all fields are in nanoseconds, averages are ewmas stored left shifted * all fields are in nanoseconds, averages are ewmas stored left shifted
* by 8 * by 8
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment