mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
btrfs: use bio_is_zone_append() in the completion handler
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: 9b1ce7f0c6
("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>
This commit is contained in:
parent
d75d72a858
commit
6c3864e055
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user