]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
bcachefs: Silence extent_poisoned error messages
authorKent Overstreet <kent.overstreet@linux.dev>
Tue, 15 Apr 2025 12:58:22 +0000 (08:58 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Tue, 15 Apr 2025 15:34:37 +0000 (11:34 -0400)
extent poisoning is partly so that we don't keep spewing the dmesg log
when we've got unreadable data - we don't want to print these.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/errcode.h
fs/bcachefs/extents.c
fs/bcachefs/io_read.c

index c8696f01eb14f670f22278686ec88ee4f33776e6..a615e4852deda8b6d005c8b9f1eaf0ed279efc36 100644 (file)
        x(EIO,                          mark_stripe)                            \
        x(EIO,                          stripe_reconstruct)                     \
        x(EIO,                          key_type_error)                         \
-       x(EIO,                          extent_poisened)                        \
+       x(EIO,                          extent_poisoned)                        \
        x(EIO,                          missing_indirect_extent)                \
        x(EIO,                          invalidate_stripe_to_dev)               \
        x(EIO,                          no_encryption_key)                      \
index ae7c7a177e10b243f08cc4d432a48c2a7ef85808..dca2b8425cc05f435203af57d0a081722af003a0 100644 (file)
@@ -139,7 +139,7 @@ int bch2_bkey_pick_read_device(struct bch_fs *c, struct bkey_s_c k,
        struct bkey_ptrs_c ptrs = bch2_bkey_ptrs_c(k);
 
        if (bch2_bkey_extent_ptrs_flags(ptrs) & BIT_ULL(BCH_EXTENT_FLAG_poisoned))
-               return -BCH_ERR_extent_poisened;
+               return -BCH_ERR_extent_poisoned;
 
        rcu_read_lock();
        const union bch_extent_entry *entry;
index de8ccd593ec73c0fe60a678a154c42ff997cf02c..def4a26a3b4590c593bf415303a0e6090c0e01ca 100644 (file)
@@ -1349,14 +1349,16 @@ err:
 
        bch2_trans_iter_exit(trans, &iter);
 
-       if (ret) {
-               struct printbuf buf = PRINTBUF;
-               lockrestart_do(trans,
-                       bch2_inum_offset_err_msg_trans(trans, &buf, inum,
-                                                      bvec_iter.bi_sector << 9));
-               prt_printf(&buf, "read error: %s", bch2_err_str(ret));
-               bch_err_ratelimited(c, "%s", buf.buf);
-               printbuf_exit(&buf);
+       if (unlikely(ret)) {
+               if (ret != -BCH_ERR_extent_poisoned) {
+                       struct printbuf buf = PRINTBUF;
+                       lockrestart_do(trans,
+                                      bch2_inum_offset_err_msg_trans(trans, &buf, inum,
+                                                                     bvec_iter.bi_sector << 9));
+                       prt_printf(&buf, "data read error: %s", bch2_err_str(ret));
+                       bch_err_ratelimited(c, "%s", buf.buf);
+                       printbuf_exit(&buf);
+               }
 
                rbio->bio.bi_status     = BLK_STS_IOERR;
                rbio->ret               = ret;