| 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 |
| |
| |
| @@ -76,14 +76,14 @@ for fmt in qcow qcow2 qed vdi vmdk vpc; do |
| echo " |
| 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 " |
| 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 |
| |
| |
| @@ -2,8 +2,8 @@ QA output created by 109 |
| |
| |
| |
| -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. |
| |
| |
| |
| -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. |
| |
| |
| |
| -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. |
| |
| |
| |
| -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. |
| |
| |
| |
| -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. |
| |
| |
| |
| -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. |
| |
| |
| |
| -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. |
| |
| |
| |
| -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. |
| |
| |
| |
| -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. |
| |
| |
| |
| -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. |
| |
| |
| |
| -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 |
| |
| |
| @@ -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 |
| |