On Tue 14 Jan 2020 03:15:48 PM CET, Max Reitz <mre...@redhat.com> wrote: >> @@ -3836,7 +3837,7 @@ qcow2_co_copy_range_from(BlockDriverState *bs, >> case QCOW2_CLUSTER_NORMAL: >> child = s->data_file; >> copy_offset += offset_into_cluster(s, src_offset); >> - if ((copy_offset & 511) != 0) { >> + if (!QEMU_IS_ALIGNED(copy_offset, BDRV_SECTOR_SIZE)) { > > Hm. I don’t get this one.
Ok, this came with Fam's "qemu-img convert with copy offloading" series: https://lists.gnu.org/archive/html/qemu-block/2018-06/msg00015.html and qemu-img uses sectors here: blk_co_copy_range(..., sector_num << BDRV_SECTOR_BITS, n << BDRV_SECTOR_BITS, ...) so I guess that's why the check is there. Again, I think this should be bl.request_alignment, because as far as I can tell copy_file_range() works just fine unless O_DIRECT is used. Berto