]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bcachefs: Fix bch2_read_retry_nodecode()
authorKent Overstreet <kent.overstreet@linux.dev>
Sat, 29 Jun 2024 00:40:24 +0000 (20:40 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sat, 29 Jun 2024 00:47:04 +0000 (20:47 -0400)
BCH_READ_NODECODE mode - used by the move paths - really wants to use
only the original rbio, but the retry path really wants to clone - oof.

Make sure to copy the crc of the pointer we read from back to the
original rbio, or we'll see spurious checksum errors later.

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

index 2a5c4371f6f8022a90a18afefcbe475c2f1cbdf9..ebf39ef72fb2c6243bb20496a57bf6eb786d37d4 100644 (file)
@@ -1003,6 +1003,9 @@ get_bio:
        rbio->promote           = promote;
        INIT_WORK(&rbio->work, NULL);
 
+       if (flags & BCH_READ_NODECODE)
+               orig->pick = pick;
+
        rbio->bio.bi_opf        = orig->bio.bi_opf;
        rbio->bio.bi_iter.bi_sector = pick.ptr.offset;
        rbio->bio.bi_end_io     = bch2_read_endio;