bcachefs: sb_validate() no longer requires members_v1
authorKent Overstreet <kent.overstreet@linux.dev>
Wed, 16 Apr 2025 03:35:48 +0000 (23:35 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Thu, 22 May 2025 00:14:19 +0000 (20:14 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/super-io.c

index 8ebc5e3f3ea3bcd54736486ecdee10a759698667..872707e5fa95074a34adf99b26e2111f58b718a5 100644 (file)
@@ -384,7 +384,6 @@ static int bch2_sb_compatible(struct bch_sb *sb, struct printbuf *out)
 int bch2_sb_validate(struct bch_sb *sb, u64 read_offset,
                     enum bch_validate_flags flags, struct printbuf *out)
 {
-       struct bch_sb_field_members_v1 *mi;
        enum bch_opt_id opt_id;
        int ret;
 
@@ -539,14 +538,17 @@ int bch2_sb_validate(struct bch_sb *sb, u64 read_offset,
                }
        }
 
+       struct bch_sb_field *mi =
+               bch2_sb_field_get_id(sb, BCH_SB_FIELD_members_v2) ?:
+               bch2_sb_field_get_id(sb, BCH_SB_FIELD_members_v1);
+
        /* members must be validated first: */
-       mi = bch2_sb_field_get(sb, members_v1);
        if (!mi) {
                prt_printf(out, "Invalid superblock: member info area missing");
                return -BCH_ERR_invalid_sb_members_missing;
        }
 
-       ret = bch2_sb_field_validate(sb, &mi->field, flags, out);
+       ret = bch2_sb_field_validate(sb, mi, flags, out);
        if (ret)
                return ret;