]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
bcachefs: Don't aggressively discard the journal
authorKent Overstreet <kent.overstreet@linux.dev>
Wed, 7 May 2025 17:32:15 +0000 (13:32 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Wed, 7 May 2025 21:10:10 +0000 (17:10 -0400)
We frequently use 'bcachefs list_journal -a' for debugging, as it
provides a record of all btree transactions, and a history of what
happened.

But it's not so useful if we immediately discard journal buckets right
after they're no longer dirty.

This tweaks journal reclaim to only discard when we're low on space,
keeping the journal mostly un-discarded.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/journal_reclaim.c

index ea670c3c43d8a08a2f2b12e00b7bd584b5fbccac..976464d8a695ae62ebc6cd74d83d8950926ee463 100644 (file)
@@ -266,10 +266,11 @@ out:
 
 static bool should_discard_bucket(struct journal *j, struct journal_device *ja)
 {
-       bool ret;
-
        spin_lock(&j->lock);
-       ret = ja->discard_idx != ja->dirty_idx_ondisk;
+       unsigned min_free = max(4, ja->nr / 8);
+
+       bool ret = bch2_journal_dev_buckets_available(j, ja, journal_space_discarded) < min_free &&
+               ja->discard_idx != ja->dirty_idx_ondisk;
        spin_unlock(&j->lock);
 
        return ret;