]> Git Repo - qemu.git/blobdiff - tests/qemu-iotests/028
Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging
[qemu.git] / tests / qemu-iotests / 028
index 0ca220e88eb412004f045927c7ba384bf37703eb..7783e57c716c751a33eab81061d74d6574022aaa 100755 (executable)
@@ -28,12 +28,12 @@ seq=`basename $0`
 echo "QA output created by $seq"
 
 here=`pwd`
-tmp=/tmp/$$
 status=1       # failure is the default!
 
 _cleanup()
 {
-       _cleanup_test_img
+    rm -f "${TEST_IMG}.copy"
+    _cleanup_test_img
 }
 trap "_cleanup; exit \$status" 0 1 2 3 15
 
@@ -41,10 +41,12 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 . ./common.rc
 . ./common.filter
 . ./common.pattern
+. ./common.qemu
 
 # Any format supporting backing files except vmdk and qcow which do not support
 # smaller backing files.
-_supported_fmt qcow2
+_supported_fmt qcow2 qed
+_supported_proto file
 _supported_os Linux
 
 # Choose a size that is not necessarily a cluster size multiple for image
@@ -57,27 +59,30 @@ base_size=$(( image_size - 1024 * 1024 * 1024 ))
 
 offset=$(( base_size - 32 * 1024 ))
 
+TEST_IMG_SAVE="$TEST_IMG"
+TEST_IMG="$TEST_IMG.base"
+
 _make_test_img $base_size
 
 echo "Filling base image"
 echo
 
 # Fill end of base image with a pattern, skipping every other sector
-io writev $offset 512 1024 31
+io writev $offset 512 1024 32
 
 _check_test_img
 
 echo "Creating test image with backing file"
 echo
 
-mv $TEST_IMG $TEST_IMG.base
-_make_test_img -b $TEST_IMG.base $image_size
+TEST_IMG="$TEST_IMG_SAVE"
+_make_test_img -b "$TEST_IMG.base" $image_size
 
 echo "Filling test image"
 echo
 
 # Write every other sector around where the base image ends
-io writev $(( offset + 512 )) 512 1024 63
+io writev $(( offset + 512 )) 512 1024 64
 
 _check_test_img
 
@@ -85,13 +90,46 @@ echo "Reading"
 echo
 
 # Base image sectors
-io readv $(( offset )) 512 1024 31
+io readv $(( offset )) 512 1024 32
+
+# Image sectors
+io readv $(( offset + 512 )) 512 1024 64
+
+# Zero sectors beyond end of base image
+io_zero readv $(( offset + 32 * 1024 )) 512 1024 32
+
+_check_test_img
+
+# Rebase it on top of its base image
+$QEMU_IMG rebase -b "$TEST_IMG.base" "$TEST_IMG"
+
+echo
+echo block-backup
+echo
+
+qemu_comm_method="monitor"
+_launch_qemu -drive file="${TEST_IMG}",cache=${CACHEMODE},id=disk
+h=$QEMU_HANDLE
+QEMU_COMM_TIMEOUT=1
+
+# Silence output since it contains the disk image path and QEMU's readline
+# character echoing makes it very hard to filter the output. Plus, there
+# is no telling how many times the command will repeat before succeeding.
+_send_qemu_cmd $h "drive_backup disk ${TEST_IMG}.copy" "(qemu)" >/dev/null
+_send_qemu_cmd $h "" "Formatting" | _filter_img_create
+qemu_cmd_repeat=20 _send_qemu_cmd $h "info block-jobs" "No active jobs" >/dev/null
+_send_qemu_cmd $h "info block-jobs" "No active jobs"
+_send_qemu_cmd $h 'quit' ""
+
+# Base image sectors
+TEST_IMG="${TEST_IMG}.copy" io readv $(( offset )) 512 1024 32
 
 # Image sectors
-io readv $(( offset + 512 )) 512 1024 63
+TEST_IMG="${TEST_IMG}.copy" io readv $(( offset + 512 )) 512 1024 64
 
 # Zero sectors beyond end of base image
-io_zero readv $(( offset + 32 * 1024 )) 512 1024 31
+TEST_IMG="${TEST_IMG}.copy" io_zero readv $(( offset + 32 * 1024 )) 512 1024 32
+
 
 _check_test_img
 
This page took 0.02748 seconds and 4 git commands to generate.