diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-04-02 16:57:29 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:09:30 -0400 |
commit | 64afbbc9096f819ee5d2c0d98bef203612630e1d (patch) | |
tree | a1f359e3cbed6cddc5a0d0f9ded8d58f50b995e0 /fs/bcachefs/io.c | |
parent | 75f02de43f4f7e76b9453096c5f4255d4476eda8 (diff) | |
download | lwn-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.c | 26 |
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); } |