bcachefs: Improve read_from_stale_dirty_pointer() message
authorKent Overstreet <kent.overstreet@gmail.com>
Sat, 2 Apr 2022 20:57:29 +0000 (16:57 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:30 +0000 (17:09 -0400)
With printbufs, it's now easy to build up multi-line log messages and
emit them with one call, which is good because it prevents multiple
multi-line log messages from getting Interspersed in the log buffer;
this patch also improves the formatting and converts it to latest style.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
fs/bcachefs/io.c

index 6bebbd44ccc81b9d7548735634cdf8e78ca243a1..0f80255e59bd4e6a5cc96bab329fd3953e8ee5ad 100644 (file)
@@ -2089,22 +2089,28 @@ static noinline void read_from_stale_dirty_pointer(struct btree_trans *trans,
        struct printbuf buf = PRINTBUF;
        int ret;
 
-       bch2_bkey_val_to_text(&buf, c, k);
-       bch2_fs_inconsistent(c, "Attempting to read from stale dirty pointer: %s", buf.buf);
-
        bch2_trans_iter_init(trans, &iter, BTREE_ID_alloc,
-                            POS(ptr.dev, PTR_BUCKET_NR(ca, &ptr)),
+                            PTR_BUCKET_POS(c, &ptr),
                             BTREE_ITER_CACHED);
 
-       ret = lockrestart_do(trans, bkey_err(k = bch2_btree_iter_peek_slot(&iter)));
-       if (ret)
-               goto out;
+       pr_buf(&buf, "Attempting to read from stale dirty pointer:");
+       pr_indent_push(&buf, 2);
+       pr_newline(&buf);
 
        bch2_bkey_val_to_text(&buf, c, k);
-       bch_err(c, "%s", buf.buf);
-       bch_err(c, "memory gen: %u", *bucket_gen(ca, iter.pos.offset));
+       pr_newline(&buf);
+
+       pr_buf(&buf, "memory gen: %u", *bucket_gen(ca, iter.pos.offset));
+
+       ret = lockrestart_do(trans, bkey_err(k = bch2_btree_iter_peek_slot(&iter)));
+       if (!ret) {
+               pr_newline(&buf);
+               bch2_bkey_val_to_text(&buf, c, k);
+       }
+
+       bch2_fs_inconsistent(c, "%s", buf.buf);
+
        bch2_trans_iter_exit(trans, &iter);
-out:
        printbuf_exit(&buf);
 }