iotests: Test copy offloading with external data file

This adds a test for 'qemu-img convert' with copy offloading where the
target image has an external data file. If the test hosts supports it,
it tests both the case where copy offloading is supported and the case
where it isn't (otherwise we just test unsupported twice).

More specifically, the case with unsupported copy offloading tests
qcow2_alloc_cluster_abort() with external data files.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20200211094900.17315-4-kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
stable-5.0
Kevin Wolf 2020-02-11 10:49:00 +01:00
parent c3b6658c1a
commit a0cf8daf77
2 changed files with 20 additions and 0 deletions

View File

@ -197,6 +197,20 @@ $QEMU_IO -c 'read -P 0x11 0 1M' -f $IMGFMT "$TEST_IMG" | _filter_qemu_io
$QEMU_IMG map --output=human "$TEST_IMG" | _filter_testdir
$QEMU_IMG map --output=json "$TEST_IMG"
echo
echo "=== Copy offloading ==="
echo
# Make use of copy offloading if the test host can provide it
_make_test_img -o "data_file=$TEST_IMG.data" 64M
$QEMU_IMG convert -f $IMGFMT -O $IMGFMT -n -C "$TEST_IMG.src" "$TEST_IMG"
$QEMU_IMG compare -f $IMGFMT -F $IMGFMT "$TEST_IMG.src" "$TEST_IMG"
# blkdebug doesn't support copy offloading, so this tests the error path
$QEMU_IMG amend -f $IMGFMT -o "data_file=blkdebug::$TEST_IMG.data" "$TEST_IMG"
$QEMU_IMG convert -f $IMGFMT -O $IMGFMT -n -C "$TEST_IMG.src" "$TEST_IMG"
$QEMU_IMG compare -f $IMGFMT -F $IMGFMT "$TEST_IMG.src" "$TEST_IMG"
# success, all done
echo "*** done"
rm -f $seq.full

View File

@ -122,4 +122,10 @@ Offset Length Mapped to File
0 0x100000 0 TEST_DIR/t.qcow2.data
[{ "start": 0, "length": 1048576, "depth": 0, "zero": false, "data": true, "offset": 0},
{ "start": 1048576, "length": 66060288, "depth": 0, "zero": true, "data": false}]
=== Copy offloading ===
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 data_file=TEST_DIR/t.IMGFMT.data
Images are identical.
Images are identical.
*** done