5435e8a804
Backport patches related with iotest from upstream * Patches added: block-backend-Retain-permissions-after-m.patch iotest-065-explicit-compression-type.patch iotest-214-explicit-compression-type.patch iotest-302-use-img_info_log-helper.patch iotest-303-explicit-compression-type.patch iotest-39-use-_qcow2_dump_header.patch iotests-60-more-accurate-set-dirty-bit-i.patch iotests-bash-tests-filter-compression-ty.patch iotests-common.rc-introduce-_qcow2_dump_.patch iotests-declare-lack-of-support-for-comp.patch iotests-drop-qemu_img_verbose-helper.patch iotests-massive-use-_qcow2_dump_header.patch iotests-MRCE-Write-data-to-source.patch iotests.py-filter-out-successful-output-.patch iotests.py-img_info_log-rename-imgopts-a.patch iotests.py-implement-unsupported_imgopts.patch iotests.py-qemu_img-create-support-IMGOP.patch iotests.py-rewrite-default-luks-support-.patch iotests-specify-some-unsupported_imgopts.patch qcow2-simple-case-support-for-downgradin.patch tests-qemu-iotests-Fix-051-for-binaries-.patch OBS-URL: https://build.opensuse.org/request/show/955876 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=690
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
|