388 lines
22 KiB
Diff
388 lines
22 KiB
Diff
From 2202321b549dda551190d919a5a1cbee0fab8c90 Mon Sep 17 00:00:00 2001
|
|
From: Kevin Wolf <kwolf@redhat.com>
|
|
Date: Wed, 3 Jun 2020 16:03:22 +0100
|
|
Subject: [PATCH 23/26] iotests/109: Don't mirror with mismatched size
|
|
|
|
RH-Author: Kevin Wolf <kwolf@redhat.com>
|
|
Message-id: <20200603160325.67506-9-kwolf@redhat.com>
|
|
Patchwork-id: 97105
|
|
O-Subject: [RHEL-AV-8.2.1 qemu-kvm PATCH v2 08/11] iotests/109: Don't mirror with mismatched size
|
|
Bugzilla: 1778593
|
|
RH-Acked-by: Eric Blake <eblake@redhat.com>
|
|
RH-Acked-by: Max Reitz <mreitz@redhat.com>
|
|
RH-Acked-by: Stefano Garzarella <sgarzare@redhat.com>
|
|
|
|
This patch makes the raw image the same size as the file in a different
|
|
format that is mirrored as raw to it to avoid errors when mirror starts
|
|
to enforce that source and target are the same size.
|
|
|
|
We check only that the first 512 bytes are zeroed (instead of 64k)
|
|
because some image formats create image files that are smaller than 64k,
|
|
so trying to read 64k would result in I/O errors. Apart from this, 512
|
|
is more appropriate anyway because the raw format driver protects
|
|
specifically the first 512 bytes.
|
|
|
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
Message-Id: <20200511135825.219437-2-kwolf@redhat.com>
|
|
Reviewed-by: Max Reitz <mreitz@redhat.com>
|
|
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
|
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
(cherry picked from commit ffa41a62d0b0e6d91f2071328befa046d56993e1)
|
|
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
|
---
|
|
tests/qemu-iotests/109 | 10 +++---
|
|
tests/qemu-iotests/109.out | 74 +++++++++++++++++-----------------------
|
|
tests/qemu-iotests/common.filter | 5 +++
|
|
3 files changed, 41 insertions(+), 48 deletions(-)
|
|
|
|
diff --git a/tests/qemu-iotests/109 b/tests/qemu-iotests/109
|
|
index 9897ceb..190c35e 100755
|
|
--- a/tests/qemu-iotests/109
|
|
+++ b/tests/qemu-iotests/109
|
|
@@ -76,14 +76,14 @@ for fmt in qcow qcow2 qed vdi vmdk vpc; do
|
|
echo "=== Writing a $fmt header into raw ==="
|
|
echo
|
|
|
|
- _make_test_img 64M
|
|
TEST_IMG="$TEST_IMG.src" IMGFMT=$fmt _make_test_img 64M
|
|
+ _make_test_img $(du -b "$TEST_IMG.src" | cut -f1) | _filter_img_create_size
|
|
|
|
# This first test should fail: The image format was probed, we may not
|
|
# write an image header at the start of the image
|
|
run_qemu "$TEST_IMG" "$TEST_IMG.src" "" "BLOCK_JOB_ERROR" |
|
|
_filter_block_job_len
|
|
- $QEMU_IO -c 'read -P 0 0 64k' "$TEST_IMG" | _filter_qemu_io
|
|
+ $QEMU_IO -c 'read -P 0 0 512' "$TEST_IMG" | _filter_qemu_io
|
|
|
|
|
|
# When raw was explicitly specified, the same must succeed
|
|
@@ -102,12 +102,12 @@ for sample_img in empty.bochs iotest-dirtylog-10G-4M.vhdx parallels-v1 \
|
|
|
|
# Can't use _use_sample_img because that isn't designed to be used multiple
|
|
# times and it overwrites $TEST_IMG (both breaks cleanup)
|
|
- _make_test_img 64M
|
|
bzcat "$SAMPLE_IMG_DIR/$sample_img.bz2" > "$TEST_IMG.src"
|
|
+ _make_test_img $(du -b "$TEST_IMG.src" | cut -f1) | _filter_img_create_size
|
|
|
|
run_qemu "$TEST_IMG" "$TEST_IMG.src" "" "BLOCK_JOB_ERROR" |
|
|
_filter_block_job_offset | _filter_block_job_len
|
|
- $QEMU_IO -c 'read -P 0 0 64k' "$TEST_IMG" | _filter_qemu_io
|
|
+ $QEMU_IO -c 'read -P 0 0 512' "$TEST_IMG" | _filter_qemu_io
|
|
|
|
run_qemu "$TEST_IMG" "$TEST_IMG.src" "'format': 'raw'," "BLOCK_JOB_READY"
|
|
$QEMU_IMG compare -f raw -F raw "$TEST_IMG" "$TEST_IMG.src"
|
|
@@ -118,8 +118,8 @@ echo "=== Write legitimate MBR into raw ==="
|
|
echo
|
|
|
|
for sample_img in grub_mbr.raw; do
|
|
- _make_test_img 64M
|
|
bzcat "$SAMPLE_IMG_DIR/$sample_img.bz2" > "$TEST_IMG.src"
|
|
+ _make_test_img $(du -b "$TEST_IMG.src" | cut -f1) | _filter_img_create_size
|
|
|
|
run_qemu "$TEST_IMG" "$TEST_IMG.src" "" "BLOCK_JOB_READY"
|
|
$QEMU_IMG compare -f raw -F raw "$TEST_IMG" "$TEST_IMG.src"
|
|
diff --git a/tests/qemu-iotests/109.out b/tests/qemu-iotests/109.out
|
|
index 884f65f..ad739df 100644
|
|
--- a/tests/qemu-iotests/109.out
|
|
+++ b/tests/qemu-iotests/109.out
|
|
@@ -2,8 +2,8 @@ QA output created by 109
|
|
|
|
=== Writing a qcow header into raw ===
|
|
|
|
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864
|
|
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -23,8 +23,8 @@ WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed
|
|
{"execute":"quit"}
|
|
{"return": {}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
|
|
-read 65536/65536 bytes at offset 0
|
|
-64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+read 512/512 bytes at offset 0
|
|
+512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -43,13 +43,12 @@ read 65536/65536 bytes at offset 0
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 1024, "offset": 1024, "speed": 0, "type": "mirror"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}}
|
|
-Warning: Image size mismatch!
|
|
Images are identical.
|
|
|
|
=== Writing a qcow2 header into raw ===
|
|
|
|
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864
|
|
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -69,8 +68,8 @@ WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed
|
|
{"execute":"quit"}
|
|
{"return": {}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
|
|
-read 65536/65536 bytes at offset 0
|
|
-64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+read 512/512 bytes at offset 0
|
|
+512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -89,13 +88,12 @@ read 65536/65536 bytes at offset 0
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 197120, "offset": 197120, "speed": 0, "type": "mirror"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}}
|
|
-Warning: Image size mismatch!
|
|
Images are identical.
|
|
|
|
=== Writing a qed header into raw ===
|
|
|
|
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864
|
|
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -115,8 +113,8 @@ WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed
|
|
{"execute":"quit"}
|
|
{"return": {}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
|
|
-read 65536/65536 bytes at offset 0
|
|
-64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+read 512/512 bytes at offset 0
|
|
+512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -135,13 +133,12 @@ read 65536/65536 bytes at offset 0
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 327680, "offset": 327680, "speed": 0, "type": "mirror"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}}
|
|
-Warning: Image size mismatch!
|
|
Images are identical.
|
|
|
|
=== Writing a vdi header into raw ===
|
|
|
|
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864
|
|
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -161,8 +158,8 @@ WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed
|
|
{"execute":"quit"}
|
|
{"return": {}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
|
|
-read 65536/65536 bytes at offset 0
|
|
-64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+read 512/512 bytes at offset 0
|
|
+512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -181,13 +178,12 @@ read 65536/65536 bytes at offset 0
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 1024, "offset": 1024, "speed": 0, "type": "mirror"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}}
|
|
-Warning: Image size mismatch!
|
|
Images are identical.
|
|
|
|
=== Writing a vmdk header into raw ===
|
|
|
|
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864
|
|
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -207,8 +203,8 @@ WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed
|
|
{"execute":"quit"}
|
|
{"return": {}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
|
|
-read 65536/65536 bytes at offset 0
|
|
-64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+read 512/512 bytes at offset 0
|
|
+512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -227,13 +223,12 @@ read 65536/65536 bytes at offset 0
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 65536, "offset": 65536, "speed": 0, "type": "mirror"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}}
|
|
-Warning: Image size mismatch!
|
|
Images are identical.
|
|
|
|
=== Writing a vpc header into raw ===
|
|
|
|
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864
|
|
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -253,8 +248,8 @@ WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed
|
|
{"execute":"quit"}
|
|
{"return": {}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
|
|
-read 65536/65536 bytes at offset 0
|
|
-64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+read 512/512 bytes at offset 0
|
|
+512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -273,12 +268,11 @@ read 65536/65536 bytes at offset 0
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 2560, "offset": 2560, "speed": 0, "type": "mirror"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}}
|
|
-Warning: Image size mismatch!
|
|
Images are identical.
|
|
|
|
=== Copying sample image empty.bochs into raw ===
|
|
|
|
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -298,8 +292,8 @@ WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed
|
|
{"execute":"quit"}
|
|
{"return": {}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
|
|
-read 65536/65536 bytes at offset 0
|
|
-64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+read 512/512 bytes at offset 0
|
|
+512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -318,12 +312,11 @@ read 65536/65536 bytes at offset 0
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 2560, "offset": 2560, "speed": 0, "type": "mirror"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}}
|
|
-Warning: Image size mismatch!
|
|
Images are identical.
|
|
|
|
=== Copying sample image iotest-dirtylog-10G-4M.vhdx into raw ===
|
|
|
|
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -343,8 +336,8 @@ WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed
|
|
{"execute":"quit"}
|
|
{"return": {}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
|
|
-read 65536/65536 bytes at offset 0
|
|
-64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+read 512/512 bytes at offset 0
|
|
+512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -363,12 +356,11 @@ read 65536/65536 bytes at offset 0
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 31457280, "offset": 31457280, "speed": 0, "type": "mirror"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}}
|
|
-Warning: Image size mismatch!
|
|
Images are identical.
|
|
|
|
=== Copying sample image parallels-v1 into raw ===
|
|
|
|
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -388,8 +380,8 @@ WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed
|
|
{"execute":"quit"}
|
|
{"return": {}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
|
|
-read 65536/65536 bytes at offset 0
|
|
-64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+read 512/512 bytes at offset 0
|
|
+512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -408,12 +400,11 @@ read 65536/65536 bytes at offset 0
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 327680, "offset": 327680, "speed": 0, "type": "mirror"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}}
|
|
-Warning: Image size mismatch!
|
|
Images are identical.
|
|
|
|
=== Copying sample image simple-pattern.cloop into raw ===
|
|
|
|
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -433,8 +424,8 @@ WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed
|
|
{"execute":"quit"}
|
|
{"return": {}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
|
|
-read 65536/65536 bytes at offset 0
|
|
-64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
+read 512/512 bytes at offset 0
|
|
+512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -453,12 +444,11 @@ read 65536/65536 bytes at offset 0
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 2048, "offset": 2048, "speed": 0, "type": "mirror"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}}
|
|
-Warning: Image size mismatch!
|
|
Images are identical.
|
|
|
|
=== Write legitimate MBR into raw ===
|
|
|
|
-Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
|
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}}
|
|
@@ -480,7 +470,6 @@ WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 512, "offset": 512, "speed": 0, "type": "mirror"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}}
|
|
-Warning: Image size mismatch!
|
|
Images are identical.
|
|
{ 'execute': 'qmp_capabilities' }
|
|
{"return": {}}
|
|
@@ -500,6 +489,5 @@ Images are identical.
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 512, "offset": 512, "speed": 0, "type": "mirror"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}}
|
|
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}}
|
|
-Warning: Image size mismatch!
|
|
Images are identical.
|
|
*** done
|
|
diff --git a/tests/qemu-iotests/common.filter b/tests/qemu-iotests/common.filter
|
|
index 5367dee..c8e8663 100644
|
|
--- a/tests/qemu-iotests/common.filter
|
|
+++ b/tests/qemu-iotests/common.filter
|
|
@@ -149,6 +149,11 @@ _filter_img_create()
|
|
-e "s# force_size=\\(on\\|off\\)##g"
|
|
}
|
|
|
|
+_filter_img_create_size()
|
|
+{
|
|
+ $SED -e "s# size=[0-9]\\+# size=SIZE#g"
|
|
+}
|
|
+
|
|
_filter_img_info()
|
|
{
|
|
if [[ "$1" == "--format-specific" ]]; then
|
|
--
|
|
1.8.3.1
|
|
|