Kevin pointed out that both glibc and kernel provides a slow fallback of copy_file_range which hurts thin provisioning. This is particularly true for thin LVs, because host_device driver cannot get allocation info from the volume, and copy_file_range is called on every sectors, making the dst fully allocated.
NFS mount points also doesn't support SEEK_DATA well, so the allocation information is unknown to QEMU. That leaves only iscsi:// which seems to do what we want so far, but it is a smaller use case. Add an option to qemu-img convert, "-C", to enable (attempting) copy offloading explicitly. And mark it incompatible with "-S" and "-c". Fam Zheng (3): Revert "qemu-img: Document copy offloading implications with -S and -c" qemu-img: Add -C option for convert with copy offloading iotests: Add test for 'qemu-img convert -C' compatibility qemu-img-cmds.hx | 2 +- qemu-img.c | 21 +++++++++++++++++---- qemu-img.texi | 14 +++++++++----- tests/qemu-iotests/082 | 8 ++++++++ tests/qemu-iotests/082.out | 11 +++++++++++ 5 files changed, 46 insertions(+), 10 deletions(-) -- 2.17.1