diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-07-16 22:31:19 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:10:08 -0400 |
commit | 970a5096acc223e90c9fad853575c87ee85b02ae (patch) | |
tree | 9780b8c68b658cc3d1c8e8b0fcdf3e8e1b72e9ed | |
parent | 20e6d9a8d4050220f4e0a0195d102abaf2c8439b (diff) | |
download | linux-stable-970a5096acc223e90c9fad853575c87ee85b02ae.tar.gz linux-stable-970a5096acc223e90c9fad853575c87ee85b02ae.tar.bz2 linux-stable-970a5096acc223e90c9fad853575c87ee85b02ae.zip |
bcachefs: Suppresss various error messages in no_data_io mode
We commonly use no_data_io mode when debugging filesystem metadata
dumps, where data checksum/compression errors are expected and
unimportant - this patch suppresses these.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r-- | fs/bcachefs/checksum.c | 2 | ||||
-rw-r--r-- | fs/bcachefs/compress.c | 3 | ||||
-rw-r--r-- | fs/bcachefs/io.c | 11 |
3 files changed, 10 insertions, 6 deletions
diff --git a/fs/bcachefs/checksum.c b/fs/bcachefs/checksum.c index 20d0e8afc1ad..bf03d42c6138 100644 --- a/fs/bcachefs/checksum.c +++ b/fs/bcachefs/checksum.c @@ -426,7 +426,7 @@ int bch2_rechecksum_bio(struct bch_fs *c, struct bio *bio, merged = bch2_checksum_bio(c, crc_old.csum_type, extent_nonce(version, crc_old), bio); - if (bch2_crc_cmp(merged, crc_old.csum)) { + if (bch2_crc_cmp(merged, crc_old.csum) && !c->opts.no_data_io) { bch_err(c, "checksum error in bch2_rechecksum_bio() (memory corruption or bug?)\n" "expected %0llx:%0llx got %0llx:%0llx (old type %s new type %s)", crc_old.csum.hi, diff --git a/fs/bcachefs/compress.c b/fs/bcachefs/compress.c index 560214c15da3..c9ca7cce55f8 100644 --- a/fs/bcachefs/compress.c +++ b/fs/bcachefs/compress.c @@ -240,7 +240,8 @@ int bch2_bio_uncompress_inplace(struct bch_fs *c, struct bio *bio, data = __bounce_alloc(c, dst_len, WRITE); if (__bio_uncompress(c, bio, data.b, *crc)) { - bch_err(c, "error rewriting existing data: decompression error"); + if (!c->opts.no_data_io) + bch_err(c, "error rewriting existing data: decompression error"); bio_unmap_or_unbounce(c, data); return -EIO; } diff --git a/fs/bcachefs/io.c b/fs/bcachefs/io.c index 8604df80a3e2..5bacc6a9dd8f 100644 --- a/fs/bcachefs/io.c +++ b/fs/bcachefs/io.c @@ -1082,7 +1082,8 @@ static enum prep_encoded_ret { op->incompressible)) { if (!crc_is_compressed(op->crc) && op->csum_type != op->crc.csum_type && - bch2_write_rechecksum(c, op, op->csum_type)) + bch2_write_rechecksum(c, op, op->csum_type) && + !c->opts.no_data_io) return PREP_ENCODED_CHECKSUM_ERR; return PREP_ENCODED_DO_WRITE; @@ -1102,7 +1103,7 @@ static enum prep_encoded_ret { csum = bch2_checksum_bio(c, op->crc.csum_type, extent_nonce(op->version, op->crc), bio); - if (bch2_crc_cmp(op->crc.csum, csum)) + if (bch2_crc_cmp(op->crc.csum, csum) && !c->opts.no_data_io) return PREP_ENCODED_CHECKSUM_ERR; if (bch2_bio_uncompress_inplace(c, bio, &op->crc)) @@ -1120,7 +1121,8 @@ static enum prep_encoded_ret { */ if ((op->crc.live_size != op->crc.uncompressed_size || op->crc.csum_type != op->csum_type) && - bch2_write_rechecksum(c, op, op->csum_type)) + bch2_write_rechecksum(c, op, op->csum_type) && + !c->opts.no_data_io) return PREP_ENCODED_CHECKSUM_ERR; /* @@ -2416,7 +2418,8 @@ static void __bch2_read_endio(struct work_struct *work) if (ret) goto decrypt_err; - if (bch2_bio_uncompress(c, src, dst, dst_iter, crc)) + if (bch2_bio_uncompress(c, src, dst, dst_iter, crc) && + !c->opts.no_data_io) goto decompression_err; } else { /* don't need to decrypt the entire bio: */ |