Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

bcache: Move spinlock into struct time_stats



Minor cleanup.

Signed-off-by: default avatarKent Overstreet <kmo@daterainc.com>
parent 8aee1220
Loading
Loading
Loading
Loading
+0 −2
Original line number Original line Diff line number Diff line
@@ -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;


+1 −6
Original line number Original line Diff line number Diff line
@@ -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)


	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;
+0 −3
Original line number Original line Diff line number Diff line
@@ -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:
+6 −2
Original line number Original line Diff line number Diff line
@@ -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);


+9 −3
Original line number Original line Diff line number Diff line
@@ -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)
	}
	}


	stats->last = now ?: 1;
	stats->last = now ?: 1;

	spin_unlock(&stats->lock);
}
}


/**
/**
Loading