[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 07/13] iotests: Add iothread cases to 155
From: |
Kevin Wolf |
Subject: |
[PULL 07/13] iotests: Add iothread cases to 155 |
Date: |
Wed, 11 Mar 2020 16:42:12 +0100 |
This patch adds test cases for attaching the backing chain to a mirror
job target right before finalising the job, where the image is in a
non-mainloop AioContext (i.e. the backing chain needs to be moved to the
AioContext of the mirror target).
This requires switching the test case from virtio-blk to virtio-scsi
because virtio-blk only actually starts using the iothreads when the
guest driver initialises the device (which never happens in a test case
without a guest OS). virtio-scsi always keeps its block nodes in the
AioContext of the the requested iothread without guest interaction.
Signed-off-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Peter Krempa <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
tests/qemu-iotests/155 | 32 +++++++++++++++++++++++---------
tests/qemu-iotests/155.out | 4 ++--
2 files changed, 25 insertions(+), 11 deletions(-)
diff --git a/tests/qemu-iotests/155 b/tests/qemu-iotests/155
index 74ddefc849..571bce9de4 100755
--- a/tests/qemu-iotests/155
+++ b/tests/qemu-iotests/155
@@ -49,11 +49,14 @@ target_img = os.path.join(iotests.test_dir, 'target.' +
iotests.imgfmt)
# chain opened right away. If False, blockdev-add
# opens it without a backing file and job completion
# is supposed to open the backing chain.
+# use_iothread: If True, an iothread is configured for the virtio-blk device
+# that uses the image being mirrored
class BaseClass(iotests.QMPTestCase):
target_blockdev_backing = None
target_real_backing = None
target_open_with_backing = True
+ use_iothread = False
def setUp(self):
qemu_img('create', '-f', iotests.imgfmt, back0_img, '1440K')
@@ -69,7 +72,16 @@ class BaseClass(iotests.QMPTestCase):
'file': {'driver': 'file',
'filename': source_img}}
self.vm.add_blockdev(self.vm.qmp_to_opts(blockdev))
- self.vm.add_device('virtio-blk,id=qdev0,drive=source')
+
+ if self.use_iothread:
+ self.vm.add_object('iothread,id=iothread0')
+ iothread = ",iothread=iothread0"
+ else:
+ iothread = ""
+
+ self.vm.add_device('virtio-scsi%s' % iothread)
+ self.vm.add_device('scsi-hd,id=qdev0,drive=source')
+
self.vm.launch()
self.assertIntactSourceBackingChain()
@@ -182,24 +194,21 @@ class MirrorBaseClass(BaseClass):
def testFull(self):
self.runMirror('full')
- node = self.findBlockNode('target',
- '/machine/peripheral/qdev0/virtio-backend')
+ node = self.findBlockNode('target', 'qdev0')
self.assertCorrectBackingImage(node, None)
self.assertIntactSourceBackingChain()
def testTop(self):
self.runMirror('top')
- node = self.findBlockNode('target',
- '/machine/peripheral/qdev0/virtio-backend')
+ node = self.findBlockNode('target', 'qdev0')
self.assertCorrectBackingImage(node, back2_img)
self.assertIntactSourceBackingChain()
def testNone(self):
self.runMirror('none')
- node = self.findBlockNode('target',
- '/machine/peripheral/qdev0/virtio-backend')
+ node = self.findBlockNode('target', 'qdev0')
self.assertCorrectBackingImage(node, source_img)
self.assertIntactSourceBackingChain()
@@ -252,6 +261,9 @@ class TestBlockdevMirrorReopen(MirrorBaseClass):
backing="backing")
self.assert_qmp(result, 'return', {})
+class TestBlockdevMirrorReopenIothread(TestBlockdevMirrorReopen):
+ use_iothread = True
+
# Attach the backing chain only during completion, with blockdev-snapshot
class TestBlockdevMirrorSnapshot(MirrorBaseClass):
cmd = 'blockdev-mirror'
@@ -268,6 +280,9 @@ class TestBlockdevMirrorSnapshot(MirrorBaseClass):
overlay="target")
self.assert_qmp(result, 'return', {})
+class TestBlockdevMirrorSnapshotIothread(TestBlockdevMirrorSnapshot):
+ use_iothread = True
+
class TestCommit(BaseClass):
existing = False
@@ -283,8 +298,7 @@ class TestCommit(BaseClass):
self.vm.event_wait('BLOCK_JOB_COMPLETED')
- node = self.findBlockNode(None,
- '/machine/peripheral/qdev0/virtio-backend')
+ node = self.findBlockNode(None, 'qdev0')
self.assert_qmp(node, 'image' + '/backing-image' * 0 + '/filename',
back1_img)
self.assert_qmp(node, 'image' + '/backing-image' * 1 + '/filename',
diff --git a/tests/qemu-iotests/155.out b/tests/qemu-iotests/155.out
index 4fd1c2dcd2..ed714d5263 100644
--- a/tests/qemu-iotests/155.out
+++ b/tests/qemu-iotests/155.out
@@ -1,5 +1,5 @@
-.........................
+...............................
----------------------------------------------------------------------
-Ran 25 tests
+Ran 31 tests
OK
--
2.20.1
- [PULL 00/13] Block layer patches, Kevin Wolf, 2020/03/11
- [PULL 01/13] qom-qmp-cmds: fix two memleaks in qmp_object_add, Kevin Wolf, 2020/03/11
- [PULL 03/13] block: Relax restrictions for blockdev-snapshot, Kevin Wolf, 2020/03/11
- [PULL 04/13] iotests: Fix run_job() with use_log=False, Kevin Wolf, 2020/03/11
- [PULL 05/13] iotests: Test mirror with temporarily disabled target backing file, Kevin Wolf, 2020/03/11
- [PULL 06/13] block: Fix cross-AioContext blockdev-snapshot, Kevin Wolf, 2020/03/11
- [PULL 07/13] iotests: Add iothread cases to 155,
Kevin Wolf <=
- [PULL 02/13] block: Make bdrv_get_cumulative_perm() public, Kevin Wolf, 2020/03/11
- [PULL 08/13] qapi: Add '@allow-write-only-overlay' feature for 'blockdev-snapshot', Kevin Wolf, 2020/03/11
- [PULL 09/13] tests/qemu-iotests: Fix socket_scm_helper build path, Kevin Wolf, 2020/03/11
- [PULL 11/13] block.c: adding bdrv_co_delete_file, Kevin Wolf, 2020/03/11
- [PULL 12/13] crypto.c: cleanup created file when block_crypto_co_create_opts_luks fails, Kevin Wolf, 2020/03/11
- [PULL 10/13] block: introducing 'bdrv_co_delete_file' interface, Kevin Wolf, 2020/03/11
- [PULL 13/13] qemu-iotests: adding LUKS cleanup for non-UTF8 secret error, Kevin Wolf, 2020/03/11
- Re: [PULL 00/13] Block layer patches, Peter Maydell, 2020/03/12
- Re: [PULL 00/13] Block layer patches, Peter Maydell, 2020/03/12