]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
btrfs: use bio_is_zone_append() in the completion handler
authorChristoph Hellwig <hch@lst.de>
Mon, 4 Nov 2024 06:26:32 +0000 (07:26 +0100)
committerDavid Sterba <dsterba@suse.com>
Tue, 17 Dec 2024 18:54:32 +0000 (19:54 +0100)
Otherwise it won't catch bios turned into regular writes by the block
level zone write plugging. The additional test it adds is for emulated
zone append.

Fixes: 9b1ce7f0c6f8 ("block: Implement zone append emulation")
CC: stable@vger.kernel.org # 6.12
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/bio.c

index 1f216d07eff65c98d67c700811f264e1aa5be08c..011cc97be3b573337e095adfc05c1f09862e85c2 100644 (file)
@@ -355,7 +355,7 @@ static void btrfs_simple_end_io(struct bio *bio)
                INIT_WORK(&bbio->end_io_work, btrfs_end_bio_work);
                queue_work(btrfs_end_io_wq(fs_info, bio), &bbio->end_io_work);
        } else {
-               if (bio_op(bio) == REQ_OP_ZONE_APPEND && !bio->bi_status)
+               if (bio_is_zone_append(bio) && !bio->bi_status)
                        btrfs_record_physical_zoned(bbio);
                btrfs_bio_end_io(bbio, bbio->bio.bi_status);
        }
@@ -398,7 +398,7 @@ static void btrfs_orig_write_end_io(struct bio *bio)
        else
                bio->bi_status = BLK_STS_OK;
 
-       if (bio_op(bio) == REQ_OP_ZONE_APPEND && !bio->bi_status)
+       if (bio_is_zone_append(bio) && !bio->bi_status)
                stripe->physical = bio->bi_iter.bi_sector << SECTOR_SHIFT;
 
        btrfs_bio_end_io(bbio, bbio->bio.bi_status);
@@ -412,7 +412,7 @@ static void btrfs_clone_write_end_io(struct bio *bio)
        if (bio->bi_status) {
                atomic_inc(&stripe->bioc->error);
                btrfs_log_dev_io_error(bio, stripe->dev);
-       } else if (bio_op(bio) == REQ_OP_ZONE_APPEND) {
+       } else if (bio_is_zone_append(bio)) {
                stripe->physical = bio->bi_iter.bi_sector << SECTOR_SHIFT;
        }