From c167f9e54100179a009051ad6eac1dfb0bcd21f6 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Sun, 23 Oct 2022 17:37:23 -0400 Subject: [PATCH] bcachefs: Journal keys overlay fixes - In the btree iterator code that overlays keys from the journal, we were incorrectly specifying level=0 instead of the btree_path's current level in a few places - When we didn't do journal replay, we shouldn't free the journal keys: this fixes cmd_list and cmd_dump, which run in norecovery mode Signed-off-by: Kent Overstreet --- fs/bcachefs/btree_iter.c | 2 +- fs/bcachefs/recovery.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index 611f7b0ca0146..5af295317ceed 100644 --- a/fs/bcachefs/btree_iter.c +++ b/fs/bcachefs/btree_iter.c @@ -1834,7 +1834,7 @@ struct bkey_s_c btree_trans_peek_journal(struct btree_trans *trans, { struct bkey_i *next_journal = bch2_btree_journal_peek(trans, iter, - k.k ? k.k->p : iter->path->l[0].b->key.k.p); + k.k ? k.k->p : path_l(iter->path)->b->key.k.p); if (next_journal) { iter->k = next_journal->k; diff --git a/fs/bcachefs/recovery.c b/fs/bcachefs/recovery.c index 580ff915d0e65..b2379adcf8ae1 100644 --- a/fs/bcachefs/recovery.c +++ b/fs/bcachefs/recovery.c @@ -1398,7 +1398,8 @@ out: set_bit(BCH_FS_FSCK_DONE, &c->flags); bch2_flush_fsck_errs(c); - if (!c->opts.keep_journal) { + if (!c->opts.keep_journal && + test_bit(JOURNAL_REPLAY_DONE, &c->journal.flags)) { bch2_journal_keys_free(&c->journal_keys); bch2_journal_entries_free(c); } -- 2.30.2