summaryrefslogtreecommitdiff
path: root/libbcachefs/btree_key_cache.h
diff options
context:
space:
mode:
Diffstat (limited to 'libbcachefs/btree_key_cache.h')
-rw-r--r--libbcachefs/btree_key_cache.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/libbcachefs/btree_key_cache.h b/libbcachefs/btree_key_cache.h
index d7d31a06..2f8b5521 100644
--- a/libbcachefs/btree_key_cache.h
+++ b/libbcachefs/btree_key_cache.h
@@ -4,8 +4,8 @@
static inline size_t bch2_nr_btree_keys_need_flush(struct bch_fs *c)
{
size_t nr_dirty = READ_ONCE(c->btree_key_cache.nr_dirty);
- size_t nr_keys = READ_ONCE(c->btree_key_cache.nr_dirty);
- size_t max_dirty = 4096 + nr_keys / 2;
+ size_t nr_keys = READ_ONCE(c->btree_key_cache.nr_keys);
+ size_t max_dirty = 1024 + nr_keys / 2;
return max_t(ssize_t, 0, nr_dirty - max_dirty);
}
@@ -13,10 +13,11 @@ static inline size_t bch2_nr_btree_keys_need_flush(struct bch_fs *c)
static inline bool bch2_btree_key_cache_must_wait(struct bch_fs *c)
{
size_t nr_dirty = READ_ONCE(c->btree_key_cache.nr_dirty);
- size_t nr_keys = READ_ONCE(c->btree_key_cache.nr_dirty);
+ size_t nr_keys = READ_ONCE(c->btree_key_cache.nr_keys);
size_t max_dirty = 4096 + (nr_keys * 3) / 4;
- return nr_dirty > max_dirty;
+ return nr_dirty > max_dirty &&
+ test_bit(JOURNAL_RECLAIM_STARTED, &c->journal.flags);
}
struct bkey_cached *