summaryrefslogtreecommitdiff
path: root/tests/qemu-iotests/102
diff options
context:
space:
mode:
authorMax Reitz <mreitz@redhat.com>2017-11-29 19:51:02 +0100
committerMax Reitz <mreitz@redhat.com>2018-01-23 12:34:42 +0100
commit6bfc907deed83af7c2df371ffa3508427c6de52f (patch)
tree3b103a79bc65f237d5f86f0e012d823a2c8d3495 /tests/qemu-iotests/102
parent34ce1111416986e62fbb6d55e0a7d45bbb9802ce (diff)
downloadqemu-6bfc907deed83af7c2df371ffa3508427c6de52f.tar.gz
qemu-iotests: Fix locking issue in 102
102 truncates a qcow2 file (the raw file) on purpose while a VM is running. However, image locking will usually prevent exactly this. The fact that most people have not noticed until now (I suppose you may have seen sporadic failures, but not taken them too seriously, like me) further shows that this truncation is actually not really done concurrently, but that the VM is still starting up by this point and has not yet opened the image. Remedy this by waiting for the monitor shell to appear before the qemu-img invocation so we know the VM is up. Signed-off-by: Max Reitz <mreitz@redhat.com> Message-id: 20171129185102.29390-1-mreitz@redhat.com Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Max Reitz <mreitz@redhat.com>
Diffstat (limited to 'tests/qemu-iotests/102')
-rwxr-xr-xtests/qemu-iotests/1027
1 files changed, 6 insertions, 1 deletions
diff --git a/tests/qemu-iotests/102 b/tests/qemu-iotests/102
index d7ad8d9840..04b3f28445 100755
--- a/tests/qemu-iotests/102
+++ b/tests/qemu-iotests/102
@@ -69,7 +69,12 @@ $QEMU_IO -c 'write 0 64k' "$TEST_IMG" | _filter_qemu_io
qemu_comm_method=monitor _launch_qemu -drive if=none,file="$TEST_IMG",id=drv0
-$QEMU_IMG resize -f raw --shrink "$TEST_IMG" $((5 * 64 * 1024))
+# Wait for a prompt to appear (so we know qemu has opened the image)
+_send_qemu_cmd '' '(qemu)'
+
+$QEMU_IMG resize --shrink --image-opts \
+ "driver=raw,file.driver=file,file.filename=$TEST_IMG,file.locking=off" \
+ $((5 * 64 * 1024))
_send_qemu_cmd $QEMU_HANDLE 'qemu-io drv0 map' 'allocated' \
| sed -e 's/^(qemu).*qemu-io drv0 map...$/(qemu) qemu-io drv0 map/'