Eric Blake <ebl...@redhat.com> writes: > Prove that blockdev-mirror can now result in sparse raw destination > files, regardless of whether the source is raw or qcow2. By making > this a separate test, it was possible to test effects of individual > patches for the various pieces that all have to work together for a > sparse mirror to be successful. > > Note that ./check -file produces different job lengths than ./check > -qcow2 (the test uses a filter to normalize); that's because when > deciding how much of the image to be mirrored, the code looks at how > much of the source image was allocated (for qcow2, this is only the > written clusters; for raw, it is the entire file). But the important > part is that the destination file ends up smaller than 3M, rather than > the 20M it used to be before this patch series. > > Signed-off-by: Eric Blake <ebl...@redhat.com> > Message-ID: <20250509204341.3553601-28-ebl...@redhat.com> > Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
Fails for me: TAP version 13 # QEMU -- "/work/armbru/qemu/bld/qemu-system-x86_64" -nodefaults -display none -accel qtest # QEMU_IMG -- "/work/armbru/qemu/bld/qemu-img" # QEMU_IO -- "/work/armbru/qemu/bld/qemu-io" --cache writeback --aio threads -f qcow2 # QEMU_NBD -- "/work/armbru/qemu/bld/qemu-nbd" # IMGFMT -- qcow2 # IMGPROTO -- file # PLATFORM -- Linux/x86_64 dusky 6.12.7-200.fc41.x86_64 # TEST_DIR -- /work/armbru/qemu/bld-x86/scratch # SOCK_DIR -- /tmp/qemu-iotests-nqettsyq # GDB_OPTIONS -- # VALGRIND_QEMU -- # PRINT_QEMU_OUTPUT -- # 1..1 # running qcow2 mirror-sparse not ok qcow2 mirror-sparse --- /work/armbru/qemu/tests/qemu-iotests/tests/mirror-sparse.out +++ /work/armbru/qemu/bld-x86/scratch/qcow2-file-mirror-sparse/mirror-sparse.out.bad @@ -140,7 +140,7 @@ {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job2"}} {"return": {}} Images are identical. -Destination is sparse; expected sparse +Destination is unknown; expected sparse === Testing creation=off discard=unmap zeroes=off === @@ -184,7 +184,7 @@ {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job2"}} {"return": {}} Images are identical. -Destination is sparse; expected sparse +Destination is unknown; expected sparse === Testing creation=off discard=unmap zeroes=unmap ===