]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bcachefs: Make sure BCH_FS_FSCK_DONE gets set
authorKent Overstreet <kent.overstreet@gmail.com>
Sun, 2 Jan 2022 00:46:12 +0000 (19:46 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:21 +0000 (17:09 -0400)
If we're not running fsck we still want to set BCH_FS_FSCK_DONE, so that
bch2_fsck_err() calls are interpreted as bch2_inconsistent_error()
calls().

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
fs/bcachefs/recovery.c

index fcacf166f9001621ab7d29da08d4dd19130c1671..39b5b97704b7033368fec24b910471a1b6a76663 100644 (file)
@@ -613,8 +613,10 @@ static int bch2_journal_replay(struct bch_fs *c)
             sizeof(keys_sorted[0]),
             journal_sort_seq_cmp, NULL);
 
-       if (keys->nr)
+       if (keys->nr) {
+               bch_verbose(c, "starting journal replay, %zu keys", keys->nr);
                replay_now_at(j, keys->journal_seq_base);
+       }
 
        seq = j->replay_journal_seq;
 
@@ -1235,6 +1237,13 @@ use_clean:
 
        set_bit(BCH_FS_ALLOC_READ_DONE, &c->flags);
 
+       /*
+        * If we're not running fsck, this ensures bch2_fsck_err() calls are
+        * instead interpreted as bch2_inconsistent_err() calls:
+        */
+       if (!c->opts.fsck)
+               set_bit(BCH_FS_FSCK_DONE, &c->flags);
+
        if (c->opts.fsck ||
            !(c->sb.compat & (1ULL << BCH_COMPAT_alloc_info)) ||
            !(c->sb.compat & (1ULL << BCH_COMPAT_alloc_metadata)) ||
@@ -1434,6 +1443,7 @@ int bch2_fs_initialize(struct bch_fs *c)
 
        set_bit(BCH_FS_ALLOC_READ_DONE, &c->flags);
        set_bit(BCH_FS_INITIAL_GC_DONE, &c->flags);
+       set_bit(BCH_FS_FSCK_DONE, &c->flags);
 
        for (i = 0; i < BTREE_ID_NR; i++)
                bch2_btree_root_alloc(c, i);