From 637de729fc86effe021bd067cccd68efd07f59c0 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Thu, 11 Nov 2021 15:50:22 -0500 Subject: [PATCH] bcachefs: Ensure btree node cache is not more than half dirty Tweak journal reclaim to ensure the btree node cache isn't more than half dirty so that memory reclaim can always make progress - the same as we do for the btree key cache. Signed-off-by: Kent Overstreet --- fs/bcachefs/journal_reclaim.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/bcachefs/journal_reclaim.c b/fs/bcachefs/journal_reclaim.c index e8b7ed8e1333..0f3c103e63ee 100644 --- a/fs/bcachefs/journal_reclaim.c +++ b/fs/bcachefs/journal_reclaim.c @@ -640,6 +640,9 @@ static int __bch2_journal_reclaim(struct journal *j, bool direct, bool kicked) if (fifo_free(&j->pin) <= 32) min_nr = 1; + if (atomic_read(&c->btree_cache.dirty) * 2 > c->btree_cache.used) + min_nr = 1; + min_key_cache = min(bch2_nr_btree_keys_need_flush(c), (size_t) 128); trace_and_count(c, journal_reclaim_start, c,