Commit 8e4d2803 authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bcachefs: Don't aggressively discard the journal



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: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent da18dabc
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -266,10 +266,11 @@ void bch2_journal_space_available(struct journal *j)

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;