bcachefs: ec: Improve error message for btree node in stripe
authorKent Overstreet <kent.overstreet@linux.dev>
Wed, 1 Mar 2023 04:11:36 +0000 (23:11 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:55 +0000 (17:09 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/ec.c

index cb291b2a4dd8f124d6975c6dc71a9088b9482572..88c4873e183340a43e0bcc24fd7268ca0386b406 100644 (file)
@@ -898,8 +898,21 @@ static int ec_stripe_update_extent(struct btree_trans *trans,
        if (*bp_offset == U64_MAX)
                return 0;
 
-       if (bch2_fs_inconsistent_on(bp.level, c, "found btree node in erasure coded bucket!?"))
+       if (bp.level) {
+               struct printbuf buf = PRINTBUF;
+               struct btree_iter node_iter;
+               struct btree *b;
+
+               b = bch2_backpointer_get_node(trans, &node_iter, bucket, *bp_offset, bp);
+               bch2_trans_iter_exit(trans, &node_iter);
+
+               prt_printf(&buf, "found btree node in erasure coded bucket: b=%px\n", b);
+               bch2_backpointer_to_text(&buf, &bp);
+
+               bch2_fs_inconsistent(c, "%s", buf.buf);
+               printbuf_exit(&buf);
                return -EIO;
+       }
 
        k = bch2_backpointer_get_key(trans, &iter, bucket, *bp_offset, bp);
        ret = bkey_err(k);