btrfs: check correct bio in finish_compressed_bio_read
authorJosef Bacik <josef@toxicpanda.com>
Fri, 18 Feb 2022 15:03:24 +0000 (10:03 -0500)
committerDavid Sterba <dsterba@suse.com>
Mon, 14 Mar 2022 12:13:51 +0000 (13:13 +0100)
Commit c09abff87f90 ("btrfs: cloned bios must not be iterated by
bio_for_each_segment_all") added ASSERT()'s to make sure we weren't
calling bio_for_each_segment_all() on a RAID5/6 bio.  However it was
checking the bio that the compression code passed in, not the
cb->orig_bio that we actually iterate over, so adjust this ASSERT() to
check the correct bio.

Reviewed-by: Boris Burkov <boris@bur.io>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/compression.c

index 71d26b8a93965568114e737a796d65acbd757604..cba3a844f21d5db71bffc21699a5f78da7504162 100644 (file)
@@ -259,7 +259,7 @@ static void finish_compressed_bio_read(struct compressed_bio *cb, struct bio *bi
                 * We have verified the checksum already, set page checked so
                 * the end_io handlers know about it
                 */
-               ASSERT(!bio_flagged(bio, BIO_CLONED));
+               ASSERT(!bio_flagged(cb->orig_bio, BIO_CLONED));
                bio_for_each_segment_all(bvec, cb->orig_bio, iter_all) {
                        u64 bvec_start = page_offset(bvec->bv_page) +
                                         bvec->bv_offset;