bcachefs: Upgrade path fixes
authorKent Overstreet <kent.overstreet@linux.dev>
Sun, 16 Jul 2023 01:03:26 +0000 (21:03 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:10:07 +0000 (17:10 -0400)
Some minor fixes to not print errors that are actually due to a verson
upgrade.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/backpointers.c
fs/bcachefs/bcachefs.h
fs/bcachefs/buckets.c
fs/bcachefs/super-io.c

index d412bae553a020b2fa994f40716cecbb63ac02ee..7c1e6546d054bfdb184530bddcaf734e9c147a06 100644 (file)
@@ -477,7 +477,7 @@ missing:
        prt_printf(&buf, "\nbp pos ");
        bch2_bpos_to_text(&buf, bp_iter.pos);
 
-       if (c->sb.version < bcachefs_metadata_version_backpointers ||
+       if (c->sb.version_upgrade_complete < bcachefs_metadata_version_backpointers ||
            c->opts.reconstruct_alloc ||
            fsck_err(c, "%s", buf.buf))
                ret = bch2_bucket_backpointer_mod(trans, bucket, bp, orig_k, true);
index 445d010c83b33f3672ed6f3006941985d1c77355..6e8dc25d41db35a63ac8ce37b0ae590c8e98af93 100644 (file)
@@ -677,11 +677,11 @@ enum bch_write_ref {
        x(check_alloc_to_lru_refs,      PASS_FSCK)                                              \
        x(fs_freespace_init,            PASS_ALWAYS|PASS_SILENT)                                \
        x(bucket_gens_init,             0)                                                      \
-       x(fs_upgrade_for_subvolumes,    0)                                                      \
        x(check_snapshot_trees,         PASS_FSCK)                                              \
        x(check_snapshots,              PASS_FSCK)                                              \
        x(check_subvols,                PASS_FSCK)                                              \
        x(delete_dead_snapshots,        PASS_FSCK|PASS_UNCLEAN|PASS_SILENT)                     \
+       x(fs_upgrade_for_subvolumes,    0)                                                      \
        x(check_inodes,                 PASS_FSCK|PASS_UNCLEAN)                                 \
        x(check_extents,                PASS_FSCK)                                              \
        x(check_dirents,                PASS_FSCK)                                              \
index 797ef5eceb3f840e64d2f763f6aa2e6a44e19af9..eb486467df17c305dde8b2b29e307d9d482970db 100644 (file)
@@ -1272,7 +1272,7 @@ int bch2_mark_reflink_p(struct btree_trans *trans,
 
        BUG_ON(!(flags & BTREE_TRIGGER_GC));
 
-       if (c->sb.version >= bcachefs_metadata_version_reflink_p_fix) {
+       if (c->sb.version_upgrade_complete >= bcachefs_metadata_version_reflink_p_fix) {
                idx -= le32_to_cpu(p.v->front_pad);
                end += le32_to_cpu(p.v->back_pad);
        }
index deef31a617c4e35c0e529a9db84dbbc2e10562b2..cea7c7caa1c0641441eaed9362f5fe6141a22e55 100644 (file)
@@ -422,6 +422,9 @@ static int bch2_sb_validate(struct bch_sb_handle *disk_sb, struct printbuf *out,
                        SET_BCH_SB_JOURNAL_FLUSH_DELAY(sb, 1000);
                if (!BCH_SB_JOURNAL_RECLAIM_DELAY(sb))
                        SET_BCH_SB_JOURNAL_RECLAIM_DELAY(sb, 1000);
+
+               if (!BCH_SB_VERSION_UPGRADE_COMPLETE(sb))
+                       SET_BCH_SB_VERSION_UPGRADE_COMPLETE(sb, le16_to_cpu(sb->version));
        }
 
        for (opt_id = 0; opt_id < bch2_opts_nr; opt_id++) {
@@ -496,7 +499,7 @@ static void bch2_sb_update(struct bch_fs *c)
        c->sb.user_uuid         = src->user_uuid;
        c->sb.version           = le16_to_cpu(src->version);
        c->sb.version_min       = le16_to_cpu(src->version_min);
-       c->sb.version_upgrade_complete = BCH_SB_VERSION_UPGRADE_COMPLETE(src) ?: c->sb.version;
+       c->sb.version_upgrade_complete = BCH_SB_VERSION_UPGRADE_COMPLETE(src);
        c->sb.nr_devices        = src->nr_devices;
        c->sb.clean             = BCH_SB_CLEAN(src);
        c->sb.encryption_type   = BCH_SB_ENCRYPTION_TYPE(src);