[PATCH v2 05/10] block: add emulation for copy
Mikulas Patocka
mpatocka at redhat.com
Wed Feb 16 05:32:45 PST 2022
On Mon, 7 Feb 2022, Nitesh Shetty wrote:
> + goto retry;
> + return PTR_ERR(bio);
> + }
> +
> + bio->bi_iter.bi_sector = sector >> SECTOR_SHIFT;
> + bio->bi_opf = op;
> + bio_set_dev(bio, bdev);
> @@ -346,6 +463,8 @@ int blkdev_issue_copy(struct block_device *src_bdev, int nr,
>
> if (blk_check_copy_offload(src_q, dest_q))
> ret = blk_copy_offload(src_bdev, nr, rlist, dest_bdev, gfp_mask);
> + else
> + ret = blk_copy_emulate(src_bdev, nr, rlist, dest_bdev, gfp_mask);
>
> return ret;
> }
The emulation is not reliable because a device mapper device may be
reconfigured and it may lose the copy capability between the calls to
blk_check_copy_offload and blk_copy_offload.
You should call blk_copy_emulate if blk_copy_offload returns an error.
Mikulas
More information about the Linux-nvme
mailing list