diff options
| -rw-r--r-- | fs/bcachefs/errcode.h | 2 | ||||
| -rw-r--r-- | fs/bcachefs/extents.c | 2 | ||||
| -rw-r--r-- | fs/bcachefs/io_read.c | 18 | 
3 files changed, 12 insertions, 10 deletions
diff --git a/fs/bcachefs/errcode.h b/fs/bcachefs/errcode.h index c8696f01eb14..a615e4852ded 100644 --- a/fs/bcachefs/errcode.h +++ b/fs/bcachefs/errcode.h @@ -287,7 +287,7 @@  	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)			\ diff --git a/fs/bcachefs/extents.c b/fs/bcachefs/extents.c index ae7c7a177e10..dca2b8425cc0 100644 --- a/fs/bcachefs/extents.c +++ b/fs/bcachefs/extents.c @@ -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; diff --git a/fs/bcachefs/io_read.c b/fs/bcachefs/io_read.c index de8ccd593ec7..def4a26a3b45 100644 --- a/fs/bcachefs/io_read.c +++ b/fs/bcachefs/io_read.c @@ -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;  | 
