Dario Faggioli
3206ea7c01
- Revert to revision 715. We're fixing bug 1199924, before moving to QEMU 7.0 OBS-URL: https://build.opensuse.org/request/show/979479 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=718
62 lines
2.8 KiB
Diff
62 lines
2.8 KiB
Diff
From: Hanna Reitz <hreitz@redhat.com>
|
|
Date: Thu, 23 Dec 2021 17:53:08 +0100
|
|
Subject: iotests/MRCE: Write data to source
|
|
|
|
Git-commit: fc2c3996a59683685a663deb3af12183ad24e4a7
|
|
|
|
This test assumes that mirror flushes the source when entering the READY
|
|
state, and that the format level will pass that flush on to the protocol
|
|
level (where we intercept it with blkdebug).
|
|
|
|
However, apparently that does not happen when using a VMDK image with
|
|
zeroed_grain=on, which actually is the default set by testenv.py. Right
|
|
now, Python tests ignore IMGOPTS, though, so this has no effect; but
|
|
Vladimir has a series that will change this, so we need to fix this test
|
|
before that series lands.
|
|
|
|
We can fix it by writing data to the source before we start the mirror
|
|
job; apparently that makes the (VMDK) format layer change its mind and
|
|
pass on the pre-READY flush to the protocol level, so the test passes
|
|
again. (I presume, without any data written, mirror just does a 64M
|
|
zero write on the target, which VMDK with zeroed_grain=on basically just
|
|
ignores.)
|
|
|
|
Without this, we do not get a flush, and so blkdebug only sees a single
|
|
flush at the end of the job instead of two, and therefore does not
|
|
inject an error, which makes the block job complete instead of raising
|
|
an error.
|
|
|
|
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
|
|
Message-Id: <20211223165308.103793-1-hreitz@redhat.com>
|
|
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
|
|
Signed-off-by: Li Zhang <lizhang@suse.de>
|
|
---
|
|
tests/qemu-iotests/tests/mirror-ready-cancel-error | 7 ++++++-
|
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/tests/qemu-iotests/tests/mirror-ready-cancel-error b/tests/qemu-iotests/tests/mirror-ready-cancel-error
|
|
index f2dc88881f9e530db250d78e6f41..770ffca37930faf779b67166a806 100755
|
|
--- a/tests/qemu-iotests/tests/mirror-ready-cancel-error
|
|
+++ b/tests/qemu-iotests/tests/mirror-ready-cancel-error
|
|
@@ -36,6 +36,11 @@ class TestMirrorReadyCancelError(iotests.QMPTestCase):
|
|
assert iotests.qemu_img_create('-f', iotests.imgfmt, target,
|
|
str(image_size)) == 0
|
|
|
|
+ # Ensure that mirror will copy something before READY so the
|
|
+ # target format layer will forward the pre-READY flush to its
|
|
+ # file child
|
|
+ assert iotests.qemu_io_silent('-c', 'write -P 1 0 64k', source) == 0
|
|
+
|
|
self.vm = iotests.VM()
|
|
self.vm.launch()
|
|
|
|
@@ -97,7 +102,7 @@ class TestMirrorReadyCancelError(iotests.QMPTestCase):
|
|
# Write something so will not leave the job immediately, but
|
|
# flush first (which will fail, thanks to blkdebug)
|
|
res = self.vm.qmp('human-monitor-command',
|
|
- command_line='qemu-io mirror-top "write 0 64k"')
|
|
+ command_line='qemu-io mirror-top "write -P 2 0 64k"')
|
|
self.assert_qmp(res, 'return', '')
|
|
|
|
# Drain status change events
|