]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
bcachefs: Don't print data read retry success on non-errors
authorKent Overstreet <kent.overstreet@linux.dev>
Thu, 10 Apr 2025 01:04:17 +0000 (21:04 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 13 Apr 2025 14:17:00 +0000 (10:17 -0400)
We may end up in the data read retry path when reading cached data and
racing with invalidation, or on checksum error when we were reading into
a userspace buffer that might have been modified while the read was in
flight.

These aren't real errors, so we shouldn't print the 'retry success'
message.

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

index fd627c8d105364d5167482c0674bddda0747f177..de8ccd593ec73c0fe60a678a154c42ff997cf02c 100644 (file)
@@ -487,6 +487,8 @@ static void bch2_rbio_retry(struct work_struct *work)
                .inum   = rbio->read_pos.inode,
        };
        struct bch_io_failures failed = { .nr = 0 };
+       int orig_error = rbio->ret;
+
        struct btree_trans *trans = bch2_trans_get(c);
 
        trace_io_read_retry(&rbio->bio);
@@ -519,7 +521,9 @@ static void bch2_rbio_retry(struct work_struct *work)
        if (ret) {
                rbio->ret = ret;
                rbio->bio.bi_status = BLK_STS_IOERR;
-       } else {
+       } else if (orig_error != -BCH_ERR_data_read_retry_csum_err_maybe_userspace &&
+                  orig_error != -BCH_ERR_data_read_ptr_stale_race &&
+                  !failed.nr) {
                struct printbuf buf = PRINTBUF;
 
                lockrestart_do(trans,