From 2547caa16964e3082efdd25e50120c0a35ef5252 Mon Sep 17 00:00:00 2001 From: Kevin Wolf Date: Fri, 15 Oct 2010 07:53:00 -0700 Subject: qemu-iotests: improve test for qemu-img convert with backing file Additionally to testing the qemu-img convert -B option, also test -o backing_file. Also, the old test acidentlly used a pattern of zeros for most of the writes, so that the allocation test didn't really work out. This is fixed by using an explicit pattern. Signed-off-by: Kevin Wolf Signed-off-by: Christoph Hellwig --- tests/qemu-iotests/019 | 59 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 23 deletions(-) (limited to 'tests') diff --git a/tests/qemu-iotests/019 b/tests/qemu-iotests/019 index 711255eaae..896b8d9930 100755 --- a/tests/qemu-iotests/019 +++ b/tests/qemu-iotests/019 @@ -57,10 +57,10 @@ echo for offset in $TEST_OFFSETS; do # Some clusters with alternating backing file/image file reads - io writev $(( offset )) 512 1024 64 + io_pattern writev $(( offset )) 512 1024 64 42 # Complete backing clusters - io writev $(( offset + 1024 * 1024)) $CLUSTER_SIZE $CLUSTER_SIZE 1 + io_pattern writev $(( offset + 1024 * 1024)) $CLUSTER_SIZE $CLUSTER_SIZE 1 42 done _check_test_img @@ -75,39 +75,52 @@ echo for offset in $TEST_OFFSETS; do # Some clusters with alternating backing file/image file reads - io writev $(( offset + 512 )) 512 1024 64 + io_pattern writev $(( offset + 512 )) 512 1024 64 43 # Complete test image clusters - io writev $(( offset + 1024 * 1024 + $CLUSTER_SIZE)) $CLUSTER_SIZE $CLUSTER_SIZE 1 + io_pattern writev $(( offset + 1024 * 1024 + $CLUSTER_SIZE)) $CLUSTER_SIZE $CLUSTER_SIZE 1 43 done _check_test_img mv $TEST_IMG $TEST_IMG.orig -$QEMU_IMG convert -O $IMGFMT -B $TEST_IMG.base $TEST_IMG.orig $TEST_IMG -echo "Checking if backing clusters are allocated when they shouldn't" -echo -for offset in $TEST_OFFSETS; do - # Complete backing clusters - is_allocated $(( offset + 1024 * 1024)) $CLUSTER_SIZE $CLUSTER_SIZE 1 -done -echo "Reading" -echo -for offset in $TEST_OFFSETS; do - # Some clusters with alternating backing file/image file reads - io readv $(( offset )) 512 1024 64 - io readv $(( offset + 512 )) 512 1024 64 +# Test the conversion twice: One test with the old-style -B option and another +# one with -o backing_file - # Complete test image clusters - io readv $(( offset + 1024 * 1024)) $CLUSTER_SIZE $CLUSTER_SIZE 1 - io readv $(( offset + 1024 * 1024 + $CLUSTER_SIZE)) $CLUSTER_SIZE $CLUSTER_SIZE 1 +for backing_option in "-B $TEST_IMG.base" "-o backing_file=$TEST_IMG.base"; do + + echo + echo Testing conversion with $backing_option + echo + $QEMU_IMG convert -O $IMGFMT $backing_option $TEST_IMG.orig $TEST_IMG + + echo "Checking if backing clusters are allocated when they shouldn't" + echo + for offset in $TEST_OFFSETS; do + # Complete backing clusters + is_allocated $(( offset + 1024 * 1024)) $CLUSTER_SIZE $CLUSTER_SIZE 1 + done + + echo "Reading" + echo + + for offset in $TEST_OFFSETS; do + # Some clusters with alternating backing file/image file reads + io_pattern readv $(( offset )) 512 1024 64 42 + io_pattern readv $(( offset + 512 )) 512 1024 64 43 + + # Complete test image clusters + io_pattern readv $(( offset + 1024 * 1024)) $CLUSTER_SIZE $CLUSTER_SIZE 1 42 + io_pattern readv $(( offset + 1024 * 1024 + $CLUSTER_SIZE)) $CLUSTER_SIZE $CLUSTER_SIZE 1 43 + + # Empty sectors + io_zero readv $(( offset + 1024 * 1024 + $CLUSTER_SIZE * 4 )) $CLUSTER_SIZE $CLUSTER_SIZE 1 + done + _check_test_img - # Empty sectors - io_zero readv $(( offset + 1024 * 1024 + $CLUSTER_SIZE * 4 )) $CLUSTER_SIZE $CLUSTER_SIZE 1 done -_check_test_img # success, all done echo "*** done" -- cgit v1.2.3