bcachefs: bch2_sb_validate() doesn't need bch_sb_handle
authorKent Overstreet <kent.overstreet@linux.dev>
Mon, 17 Mar 2025 14:54:21 +0000 (10:54 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Mon, 24 Mar 2025 13:50:35 +0000 (09:50 -0400)
Minor refactoring, so that bch2_sb_validate() can be used in the new
userspace superblock recovery tool.

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

index 7dcabc9676f4f81ace45bab871b8817fab622349..2e86a04b49e0ac22bf18460f6f9a8d8d836376d8 100644 (file)
@@ -365,10 +365,8 @@ static int bch2_sb_compatible(struct bch_sb *sb, struct printbuf *out)
        return 0;
 }
 
-static int bch2_sb_validate(struct bch_sb_handle *disk_sb,
-                           enum bch_validate_flags flags, struct printbuf *out)
+int bch2_sb_validate(struct bch_sb *sb, enum bch_validate_flags flags, struct printbuf *out)
 {
-       struct bch_sb *sb = disk_sb->sb;
        struct bch_sb_field_members_v1 *mi;
        enum bch_opt_id opt_id;
        int ret;
@@ -890,7 +888,7 @@ got_super:
 
        sb->have_layout = true;
 
-       ret = bch2_sb_validate(sb, 0, &err);
+       ret = bch2_sb_validate(sb->sb, 0, &err);
        if (ret) {
                bch2_print_opts(opts, KERN_ERR "bcachefs (%s): error validating superblock: %s\n",
                                path, err.buf);
@@ -1047,7 +1045,7 @@ int bch2_write_super(struct bch_fs *c)
        darray_for_each(online_devices, ca) {
                printbuf_reset(&err);
 
-               ret = bch2_sb_validate(&(*ca)->disk_sb, BCH_VALIDATE_write, &err);
+               ret = bch2_sb_validate((*ca)->disk_sb.sb, BCH_VALIDATE_write, &err);
                if (ret) {
                        bch2_fs_inconsistent(c, "sb invalid before write: %s", err.buf);
                        goto out;
index 167dd98f893e862a62c54e4c0e165670a538c9a0..41562380a353e625b04a4a46e632d757a6df2f65 100644 (file)
@@ -92,6 +92,8 @@ int bch2_sb_from_fs(struct bch_fs *, struct bch_dev *);
 void bch2_free_super(struct bch_sb_handle *);
 int bch2_sb_realloc(struct bch_sb_handle *, unsigned);
 
+int bch2_sb_validate(struct bch_sb *, enum bch_validate_flags, struct printbuf *);
+
 int bch2_read_super(const char *, struct bch_opts *, struct bch_sb_handle *);
 int bch2_read_super_silent(const char *, struct bch_opts *, struct bch_sb_handle *);
 int bch2_write_super(struct bch_fs *);