Commit 6bfc907d authored by Max Reitz's avatar Max Reitz
Browse files

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: default avatarMax Reitz <mreitz@redhat.com>
Message-id: 20171129185102.29390-1-mreitz@redhat.com
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
parent 34ce1111
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -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/'
+2 −1
Original line number Diff line number Diff line
@@ -14,8 +14,9 @@ Offset Length Mapped to File
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=65536
wrote 65536/65536 bytes at offset 0
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
Image resized.
QEMU X.Y.Z monitor - type 'help' for more information
Image resized.
(qemu)
(qemu) qemu-io drv0 map
64 KiB (0x10000) bytes     allocated at offset 0 bytes (0x0)
*** done