summaryrefslogtreecommitdiff
path: root/fs/bcachefs/io.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2022-04-02 16:57:29 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-22 17:09:30 -0400
commit64afbbc9096f819ee5d2c0d98bef203612630e1d (patch)
treea1f359e3cbed6cddc5a0d0f9ded8d58f50b995e0 /fs/bcachefs/io.c
parent75f02de43f4f7e76b9453096c5f4255d4476eda8 (diff)
downloadlwn-64afbbc9096f819ee5d2c0d98bef203612630e1d.tar.gz
lwn-64afbbc9096f819ee5d2c0d98bef203612630e1d.zip
bcachefs: Improve read_from_stale_dirty_pointer() message
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>
Diffstat (limited to 'fs/bcachefs/io.c')
-rw-r--r--fs/bcachefs/io.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/fs/bcachefs/io.c b/fs/bcachefs/io.c
index 6bebbd44ccc8..0f80255e59bd 100644
--- a/fs/bcachefs/io.c
+++ b/fs/bcachefs/io.c
@@ -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);
}