bcachefs: Improve error messages in trans_mark_reflink_p()
authorKent Overstreet <kent.overstreet@gmail.com>
Tue, 26 Oct 2021 18:07:43 +0000 (14:07 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:15 +0000 (17:09 -0400)
We should always print out the key we were marking.

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

index 2982f71bcf2dda415740ce56271644f5265e29ff..fc4d9d75794cdb1f5cd4e19b7ff4b5f1ed424bb2 100644 (file)
@@ -1716,6 +1716,7 @@ static int __bch2_trans_mark_reflink_p(struct btree_trans *trans,
        struct bkey_i *n;
        __le64 *refcount;
        int add = !(flags & BTREE_TRIGGER_OVERWRITE) ? 1 : -1;
+       char buf[200];
        int ret;
 
        bch2_trans_iter_init(trans, &iter, BTREE_ID_reflink, POS(0, *idx),
@@ -1735,17 +1736,19 @@ static int __bch2_trans_mark_reflink_p(struct btree_trans *trans,
 
        refcount = bkey_refcount(n);
        if (!refcount) {
+               bch2_bkey_val_to_text(&PBUF(buf), c, p.s_c);
                bch2_fs_inconsistent(c,
-                       "%llu:%llu len %u points to nonexistent indirect extent %llu",
-                       p.k->p.inode, p.k->p.offset, p.k->size, *idx);
+                       "nonexistent indirect extent at %llu while marking\n  %s",
+                       *idx, buf);
                ret = -EIO;
                goto err;
        }
 
        if (!*refcount && (flags & BTREE_TRIGGER_OVERWRITE)) {
+               bch2_bkey_val_to_text(&PBUF(buf), c, p.s_c);
                bch2_fs_inconsistent(c,
-                       "%llu:%llu len %u idx %llu indirect extent refcount underflow",
-                       p.k->p.inode, p.k->p.offset, p.k->size, *idx);
+                       "indirect extent refcount underflow at %llu while marking\n  %s",
+                       *idx, buf);
                ret = -EIO;
                goto err;
        }