bcachefs: Change bch2_btree_key_cache_count() to exclude dirty keys
We're seeing livelocks that appear to be due to bch2_btree_key_cache_scan repeatedly scanning and blocking other tasks from using the key cache lock - we probably shouldn't be reporting objects that can't actually be freed yet. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
d99af4f194
commit
baa6502905
@ -646,8 +646,10 @@ static unsigned long bch2_btree_key_cache_count(struct shrinker *shrink,
|
||||
struct bch_fs *c = container_of(shrink, struct bch_fs,
|
||||
btree_key_cache.shrink);
|
||||
struct btree_key_cache *bc = &c->btree_key_cache;
|
||||
long nr = atomic_long_read(&bc->nr_keys) -
|
||||
atomic_long_read(&bc->nr_dirty);
|
||||
|
||||
return atomic_long_read(&bc->nr_keys);
|
||||
return max(0L, nr);
|
||||
}
|
||||
|
||||
void bch2_fs_btree_key_cache_exit(struct btree_key_cache *bc)
|
||||
|
Loading…
Reference in New Issue
Block a user