bcachefs: bch2_sb_nr_devices()
authorKent Overstreet <kent.overstreet@linux.dev>
Thu, 8 Aug 2024 15:40:47 +0000 (11:40 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Mon, 9 Sep 2024 13:41:49 +0000 (09:41 -0400)
factoring out a helper

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

index 4b765422dd771a1d052922fca56066cd78f08a58..7aa5067e09c512d57b26c9a8e82a3c62ef2a9727 100644 (file)
@@ -465,3 +465,12 @@ void bch2_dev_btree_bitmap_mark(struct bch_fs *c, struct bkey_s_c k)
                __bch2_dev_btree_bitmap_mark(mi, ptr->dev, ptr->offset, btree_sectors(c));
        }
 }
+
+unsigned bch2_sb_nr_devices(const struct bch_sb *sb)
+{
+       unsigned nr = 0;
+
+       for (unsigned i = 0; i < sb->nr_devices; i++)
+               nr += bch2_member_exists((struct bch_sb *) sb, i);
+       return nr;
+}
index dd93192ec065e8ecfb5d2ffb32e87f5d24599308..f307f28576037c807108031a8cf3047eef27cbe7 100644 (file)
@@ -307,6 +307,8 @@ static inline bool bch2_member_exists(struct bch_sb *sb, unsigned dev)
        return false;
 }
 
+unsigned bch2_sb_nr_devices(const struct bch_sb *);
+
 static inline struct bch_member_cpu bch2_mi_to_cpu(struct bch_member *mi)
 {
        return (struct bch_member_cpu) {
index 2a72782d6d170cdb810efa8f88303ab428d1397c..d86d5dae54c9d1bb1f9737e2a1dcebb2329f85a2 100644 (file)
@@ -1295,15 +1295,9 @@ void bch2_sb_layout_to_text(struct printbuf *out, struct bch_sb_layout *l)
 void bch2_sb_to_text(struct printbuf *out, struct bch_sb *sb,
                     bool print_layout, unsigned fields)
 {
-       u64 fields_have = 0;
-       unsigned nr_devices = 0;
-
        if (!out->nr_tabstops)
                printbuf_tabstop_push(out, 44);
 
-       for (int i = 0; i < sb->nr_devices; i++)
-               nr_devices += bch2_member_exists(sb, i);
-
        prt_printf(out, "External UUID:\t");
        pr_uuid(out, sb->user_uuid.b);
        prt_newline(out);
@@ -1359,9 +1353,10 @@ void bch2_sb_to_text(struct printbuf *out, struct bch_sb *sb,
        prt_newline(out);
 
        prt_printf(out, "Clean:\t%llu\n", BCH_SB_CLEAN(sb));
-       prt_printf(out, "Devices:\t%u\n", nr_devices);
+       prt_printf(out, "Devices:\t%u\n", bch2_sb_nr_devices(sb));
 
        prt_printf(out, "Sections:\t");
+       u64 fields_have = 0;
        vstruct_for_each(sb, f)
                fields_have |= 1 << le32_to_cpu(f->type);
        prt_bitflags(out, bch2_sb_fields, fields_have);