Eric Blake <[email protected]> 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 <[email protected]>
> Message-ID: <[email protected]>
> Reviewed-by: Stefan Hajnoczi <[email protected]>
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 ===