Commit b4b79b07 authored by Kent Overstreet's avatar Kent Overstreet

bcachefs: Don't rejournal keys in key cache flush

Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 5fd24caf
...@@ -645,11 +645,19 @@ static int btree_key_cache_flush_pos(struct btree_trans *trans, ...@@ -645,11 +645,19 @@ static int btree_key_cache_flush_pos(struct btree_trans *trans,
if (journal_seq && ck->journal.seq != journal_seq) if (journal_seq && ck->journal.seq != journal_seq)
goto out; goto out;
trans->journal_res.seq = ck->journal.seq;
/* /*
* Since journal reclaim depends on us making progress here, and the * If we're at the end of the journal, we really want to free up space
* allocator/copygc depend on journal reclaim making progress, we need * in the journal right away - we don't want to pin that old journal
* to be using alloc reserves: * sequence number with a new btree node write, we want to re-journal
* the update
*/ */
if (ck->journal.seq == journal_last_seq(j))
commit_flags |= BCH_WATERMARK_reclaim;
else
commit_flags |= BCH_TRANS_COMMIT_no_journal_res;
ret = bch2_btree_iter_traverse(&b_iter) ?: ret = bch2_btree_iter_traverse(&b_iter) ?:
bch2_trans_update(trans, &b_iter, ck->k, bch2_trans_update(trans, &b_iter, ck->k,
BTREE_UPDATE_KEY_CACHE_RECLAIM| BTREE_UPDATE_KEY_CACHE_RECLAIM|
...@@ -658,9 +666,6 @@ static int btree_key_cache_flush_pos(struct btree_trans *trans, ...@@ -658,9 +666,6 @@ static int btree_key_cache_flush_pos(struct btree_trans *trans,
bch2_trans_commit(trans, NULL, NULL, bch2_trans_commit(trans, NULL, NULL,
BCH_TRANS_COMMIT_no_check_rw| BCH_TRANS_COMMIT_no_check_rw|
BCH_TRANS_COMMIT_no_enospc| BCH_TRANS_COMMIT_no_enospc|
(ck->journal.seq == journal_last_seq(j)
? BCH_WATERMARK_reclaim
: 0)|
commit_flags); commit_flags);
bch2_fs_fatal_err_on(ret && bch2_fs_fatal_err_on(ret &&
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment