]> www.infradead.org Git - nvme.git/commitdiff
bcachefs: Fix BCH_SB_ERRS() so we can reorder
authorKent Overstreet <kent.overstreet@linux.dev>
Thu, 26 Sep 2024 19:30:17 +0000 (15:30 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sat, 28 Sep 2024 01:46:35 +0000 (21:46 -0400)
BCH_SB_ERRS() has a field for the actual enum val so that we can reorder
to reorganize, but the way BCH_SB_ERR_MAX was defined didn't allow for
this.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/bcachefs.h
fs/bcachefs/sb-downgrade.c
fs/bcachefs/sb-errors.c
fs/bcachefs/sb-errors.h
fs/bcachefs/sb-errors_format.h

index c711d4c27a03f6ecde9a834e4c8cb42e72a4c39d..e6dd4812c02039718771a3045a40c2a1be7ec257 100644 (file)
@@ -776,7 +776,7 @@ struct bch_fs {
                unsigned        nsec_per_time_unit;
                u64             features;
                u64             compat;
-               unsigned long   errors_silent[BITS_TO_LONGS(BCH_SB_ERR_MAX)];
+               unsigned long   errors_silent[BITS_TO_LONGS(BCH_FSCK_ERR_MAX)];
                u64             btrees_lost_data;
        }                       sb;
 
index 6f0493f79959fb9868942707841d55435b4cab09..5102059a0f1dce162dc1df8cc2dcf458d7084f28 100644 (file)
@@ -312,8 +312,7 @@ static void bch2_sb_downgrade_to_text(struct printbuf *out, struct bch_sb *sb,
                        if (!first)
                                prt_char(out, ',');
                        first = false;
-                       unsigned e = le16_to_cpu(i->errors[j]);
-                       prt_str(out, e < BCH_SB_ERR_MAX ? bch2_sb_error_strs[e] : "(unknown)");
+                       bch2_sb_error_id_to_text(out, le16_to_cpu(i->errors[j]));
                }
                prt_newline(out);
        }
@@ -401,7 +400,7 @@ void bch2_sb_set_downgrade(struct bch_fs *c, unsigned new_minor, unsigned old_mi
 
                        for (unsigned j = 0; j < le16_to_cpu(i->nr_errors); j++) {
                                unsigned e = le16_to_cpu(i->errors[j]);
-                               if (e < BCH_SB_ERR_MAX)
+                               if (e < BCH_FSCK_ERR_MAX)
                                        __set_bit(e, c->sb.errors_silent);
                                if (e < sizeof(ext->errors_silent) * 8)
                                        __set_bit_le64(e, ext->errors_silent);
index c1270d790e43bfea083267b14b90362dc9ece6a8..013a96883b4e2808b482fa5b7dc1fe366fd04b88 100644 (file)
@@ -7,12 +7,12 @@
 const char * const bch2_sb_error_strs[] = {
 #define x(t, n, ...) [n] = #t,
        BCH_SB_ERRS()
-       NULL
+#undef x
 };
 
-static void bch2_sb_error_id_to_text(struct printbuf *out, enum bch_sb_error_id id)
+void bch2_sb_error_id_to_text(struct printbuf *out, enum bch_sb_error_id id)
 {
-       if (id < BCH_SB_ERR_MAX)
+       if (id < BCH_FSCK_ERR_MAX)
                prt_str(out, bch2_sb_error_strs[id]);
        else
                prt_printf(out, "(unknown error %u)", id);
index 8889001e7db4bd595192d338ea0eb24c115550b1..b2357b8e6107ba95c13146e5be124871f8962204 100644 (file)
@@ -6,6 +6,8 @@
 
 extern const char * const bch2_sb_error_strs[];
 
+void bch2_sb_error_id_to_text(struct printbuf *, enum bch_sb_error_id);
+
 extern const struct bch_sb_field_ops bch_sb_field_ops_errors;
 
 void bch2_sb_error_count(struct bch_fs *, enum bch_sb_error_id);
index 4e4e132d6d232d62d5baedf04cc49a93fb6b4bc5..49d8609c4a08a6f4b260d886ded407d29af9d2cc 100644 (file)
@@ -292,12 +292,12 @@ enum bch_fsck_flags {
        x(accounting_key_replicas_nr_devs_0,                    278,    FSCK_AUTOFIX)   \
        x(accounting_key_replicas_nr_required_bad,              279,    FSCK_AUTOFIX)   \
        x(accounting_key_replicas_devs_unsorted,                280,    FSCK_AUTOFIX)   \
+       x(MAX,                                                  281,    0)
 
 enum bch_sb_error_id {
 #define x(t, n, ...) BCH_FSCK_ERR_##t = n,
        BCH_SB_ERRS()
 #undef x
-       BCH_SB_ERR_MAX
 };
 
 struct bch_sb_field_errors {