bcachefs: btree_err() now uses bch2_print_string_as_lines()
authorKent Overstreet <kent.overstreet@linux.dev>
Sun, 25 Sep 2022 22:22:54 +0000 (18:22 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:41 +0000 (17:09 -0400)
We've seen long error messages get truncated here, so convert to the new
bch2_print_string_as_lines().

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

index c63cb70836cc25db318e6e5bdfdb9e7ceee1c566..603b825ed6fee282637fafd34e8f46969da7098e 100644 (file)
@@ -507,9 +507,11 @@ static void btree_err_msg(struct printbuf *out, struct bch_fs *c,
                          struct btree *b, struct bset *i,
                          unsigned offset, int write)
 {
-       prt_printf(out, "error validating btree node ");
-       if (write)
-               prt_printf(out, "before write ");
+       prt_printf(out, bch2_log_msg(c, ""));
+       if (!write)
+               prt_str(out, "error validating btree node ");
+       else
+               prt_str(out, "corrupt btree node before write ");
        if (ca)
                prt_printf(out, "on %s ", ca->name);
        prt_printf(out, "at btree ");
@@ -518,6 +520,7 @@ static void btree_err_msg(struct printbuf *out, struct bch_fs *c,
        prt_printf(out, "\n  node offset %u", b->written);
        if (i)
                prt_printf(out, " bset u64s %u", le16_to_cpu(i->u64s));
+       prt_str(out, ": ");
 }
 
 enum btree_err_type {
@@ -537,7 +540,7 @@ enum btree_validate_ret {
        struct printbuf out = PRINTBUF;                                 \
                                                                        \
        btree_err_msg(&out, c, ca, b, i, b->written, write);            \
-       prt_printf(&out, ": " msg, ##__VA_ARGS__);                      \
+       prt_printf(&out, msg, ##__VA_ARGS__);                           \
                                                                        \
        if (type == BTREE_ERR_FIXABLE &&                                \
            write == READ &&                                            \
@@ -546,10 +549,10 @@ enum btree_validate_ret {
                goto out;                                               \
        }                                                               \
                                                                        \
+       bch2_print_string_as_lines(KERN_ERR, out.buf);                  \
+                                                                       \
        switch (write) {                                                \
        case READ:                                                      \
-               bch_err(c, "%s", out.buf);                              \
-                                                                       \
                switch (type) {                                         \
                case BTREE_ERR_FIXABLE:                                 \
                        ret = -BCH_ERR_fsck_errors_not_fixed;           \
@@ -569,8 +572,6 @@ enum btree_validate_ret {
                }                                                       \
                break;                                                  \
        case WRITE:                                                     \
-               bch_err(c, "corrupt metadata before write: %s", out.buf);\
-                                                                       \
                if (bch2_fs_inconsistent(c)) {                          \
                        ret = -BCH_ERR_fsck_errors_not_fixed;           \
                        goto fsck_err;                                  \