[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 11/11] iotests/307: Test iothread conflict for exports
From: |
Kevin Wolf |
Subject: |
[PULL 11/11] iotests/307: Test iothread conflict for exports |
Date: |
Tue, 20 Jul 2021 17:10:53 +0200 |
From: Max Reitz <mreitz@redhat.com>
Passing fixed-iothread=true should make iothread conflicts fatal,
whereas fixed-iothread=false should not.
Combine the second case with an error condition that is checked after
the iothread is handled, to verify that qemu does not crash if there is
such an error after changing the iothread failed.
Signed-off-by: Max Reitz <mreitz@redhat.com>
Message-Id: <20210624083825.29224-3-mreitz@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Tested-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
tests/qemu-iotests/307 | 15 +++++++++++++++
tests/qemu-iotests/307.out | 8 ++++++++
2 files changed, 23 insertions(+)
diff --git a/tests/qemu-iotests/307 b/tests/qemu-iotests/307
index c7685347bc..b429b5aa50 100755
--- a/tests/qemu-iotests/307
+++ b/tests/qemu-iotests/307
@@ -41,9 +41,11 @@ with iotests.FilePath('image') as img, \
iotests.log('=== Launch VM ===')
vm.add_object('iothread,id=iothread0')
+ vm.add_object('iothread,id=iothread1')
vm.add_blockdev(f'file,filename={img},node-name=file')
vm.add_blockdev(f'{iotests.imgfmt},file=file,node-name=fmt')
vm.add_blockdev('raw,file=file,node-name=ro,read-only=on')
+ vm.add_blockdev('null-co,node-name=null')
vm.add_device(f'id=scsi0,driver=virtio-scsi,iothread=iothread0')
vm.launch()
@@ -74,6 +76,19 @@ with iotests.FilePath('image') as img, \
vm.qmp_log('query-block-exports')
iotests.qemu_nbd_list_log('-k', socket)
+ iotests.log('\n=== Add export with conflicting iothread ===')
+
+ vm.qmp_log('device_add', id='sdb', driver='scsi-hd', drive='null')
+
+ # Should fail because of fixed-iothread
+ vm.qmp_log('block-export-add', id='export1', type='nbd', node_name='null',
+ iothread='iothread1', fixed_iothread=True, writable=True)
+
+ # Should ignore the iothread conflict, but then fail because of the
+ # permission conflict (and not crash)
+ vm.qmp_log('block-export-add', id='export1', type='nbd', node_name='null',
+ iothread='iothread1', fixed_iothread=False, writable=True)
+
iotests.log('\n=== Add a writable export ===')
# This fails because share-rw=off
diff --git a/tests/qemu-iotests/307.out b/tests/qemu-iotests/307.out
index 4b0c7e155a..ec8d2be0e0 100644
--- a/tests/qemu-iotests/307.out
+++ b/tests/qemu-iotests/307.out
@@ -51,6 +51,14 @@ exports available: 1
base:allocation
+=== Add export with conflicting iothread ===
+{"execute": "device_add", "arguments": {"drive": "null", "driver": "scsi-hd",
"id": "sdb"}}
+{"return": {}}
+{"execute": "block-export-add", "arguments": {"fixed-iothread": true, "id":
"export1", "iothread": "iothread1", "node-name": "null", "type": "nbd",
"writable": true}}
+{"error": {"class": "GenericError", "desc": "Cannot change iothread of active
block backend"}}
+{"execute": "block-export-add", "arguments": {"fixed-iothread": false, "id":
"export1", "iothread": "iothread1", "node-name": "null", "type": "nbd",
"writable": true}}
+{"error": {"class": "GenericError", "desc": "Permission conflict on node
'null': permissions 'write' are both required by an unnamed block device (uses
node 'null' as 'root' child) and unshared by block device 'sdb' (uses node
'null' as 'root' child)."}}
+
=== Add a writable export ===
{"execute": "block-export-add", "arguments": {"description": "This is the
writable second export", "id": "export1", "name": "export1", "node-name":
"fmt", "type": "nbd", "writable": true, "writethrough": true}}
{"error": {"class": "GenericError", "desc": "Permission conflict on node
'fmt': permissions 'write' are both required by an unnamed block device (uses
node 'fmt' as 'root' child) and unshared by block device 'sda' (uses node 'fmt'
as 'root' child)."}}
--
2.31.1
- [PULL 00/11] Block layer patches, Kevin Wolf, 2021/07/20
- [PULL 01/11] block/mirror: set .co for active-write MirrorOp objects, Kevin Wolf, 2021/07/20
- [PULL 02/11] iotest 151: add test-case that shows active mirror dead-lock, Kevin Wolf, 2021/07/20
- [PULL 03/11] block/mirror: fix active mirror dead-lock in mirror_wait_on_conflicts, Kevin Wolf, 2021/07/20
- [PULL 04/11] block: Add option to use driver whitelist even in tools, Kevin Wolf, 2021/07/20
- [PULL 05/11] replication: Remove s->active_disk, Kevin Wolf, 2021/07/20
- [PULL 06/11] replication: Reduce usage of s->hidden_disk and s->secondary_disk, Kevin Wolf, 2021/07/20
- [PULL 07/11] replication: Properly attach children, Kevin Wolf, 2021/07/20
- [PULL 08/11] replication: Remove workaround, Kevin Wolf, 2021/07/20
- [PULL 09/11] block/vvfat: fix: drop backing, Kevin Wolf, 2021/07/20
- [PULL 11/11] iotests/307: Test iothread conflict for exports,
Kevin Wolf <=
- [PULL 10/11] block/export: Conditionally ignore set-context error, Kevin Wolf, 2021/07/20
- Re: [PULL 00/11] Block layer patches, Peter Maydell, 2021/07/20