tests/qemu-iotests/240 | 2 -- tests/qemu-iotests/240.out | 4 +--- 2 files changed, 1 insertion(+), 5 deletions(-)
Commit 2e8e18c2e463 ("virtio-scsi: add iothread-vq-mapping parameter")
removed the limitation that virtio-scsi devices must successfully set
the AioContext on their BlockBackends. This was made possible thanks to
the QEMU multi-queue block layer.
This change broke qemu-iotests 240, which checks that adding a
virtio-scsi device with a drive that is already in another AioContext
will fail.
Update the test to take the relaxed behavior into account. I considered
removing this test case entirely, but the code coverage still seems
valuable.
Fixes: 2e8e18c2e463 ("virtio-scsi: add iothread-vq-mapping parameter")
Reported-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
tests/qemu-iotests/240 | 2 --
tests/qemu-iotests/240.out | 4 +---
2 files changed, 1 insertion(+), 5 deletions(-)
diff --git a/tests/qemu-iotests/240 b/tests/qemu-iotests/240
index 9b281e1dc0..f8af9ff648 100755
--- a/tests/qemu-iotests/240
+++ b/tests/qemu-iotests/240
@@ -81,8 +81,6 @@ class TestCase(iotests.QMPTestCase):
self.vm.qmp_log('device_del', id='scsi-hd0')
self.vm.event_wait('DEVICE_DELETED')
- self.vm.qmp_log('device_add', id='scsi-hd1', driver='scsi-hd', drive='hd0', bus="scsi1.0")
-
self.vm.qmp_log('device_del', id='scsi-hd1')
self.vm.event_wait('DEVICE_DELETED')
self.vm.qmp_log('blockdev-del', node_name='hd0')
diff --git a/tests/qemu-iotests/240.out b/tests/qemu-iotests/240.out
index 89ed25e506..10dcc42e06 100644
--- a/tests/qemu-iotests/240.out
+++ b/tests/qemu-iotests/240.out
@@ -46,10 +46,8 @@
{"execute": "device_add", "arguments": {"bus": "scsi0.0", "drive": "hd0", "driver": "scsi-hd", "id": "scsi-hd0"}}
{"return": {}}
{"execute": "device_add", "arguments": {"bus": "scsi1.0", "drive": "hd0", "driver": "scsi-hd", "id": "scsi-hd1"}}
-{"error": {"class": "GenericError", "desc": "Cannot change iothread of active block backend"}}
-{"execute": "device_del", "arguments": {"id": "scsi-hd0"}}
{"return": {}}
-{"execute": "device_add", "arguments": {"bus": "scsi1.0", "drive": "hd0", "driver": "scsi-hd", "id": "scsi-hd1"}}
+{"execute": "device_del", "arguments": {"id": "scsi-hd0"}}
{"return": {}}
{"execute": "device_del", "arguments": {"id": "scsi-hd1"}}
{"return": {}}
--
2.49.0
On 29/05/2025 22.31, Stefan Hajnoczi wrote:
> Commit 2e8e18c2e463 ("virtio-scsi: add iothread-vq-mapping parameter")
> removed the limitation that virtio-scsi devices must successfully set
> the AioContext on their BlockBackends. This was made possible thanks to
> the QEMU multi-queue block layer.
>
> This change broke qemu-iotests 240, which checks that adding a
> virtio-scsi device with a drive that is already in another AioContext
> will fail.
>
> Update the test to take the relaxed behavior into account. I considered
> removing this test case entirely, but the code coverage still seems
> valuable.
>
> Fixes: 2e8e18c2e463 ("virtio-scsi: add iothread-vq-mapping parameter")
> Reported-by: Thomas Huth <thuth@redhat.com>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
> tests/qemu-iotests/240 | 2 --
> tests/qemu-iotests/240.out | 4 +---
> 2 files changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/tests/qemu-iotests/240 b/tests/qemu-iotests/240
> index 9b281e1dc0..f8af9ff648 100755
> --- a/tests/qemu-iotests/240
> +++ b/tests/qemu-iotests/240
> @@ -81,8 +81,6 @@ class TestCase(iotests.QMPTestCase):
>
> self.vm.qmp_log('device_del', id='scsi-hd0')
> self.vm.event_wait('DEVICE_DELETED')
> - self.vm.qmp_log('device_add', id='scsi-hd1', driver='scsi-hd', drive='hd0', bus="scsi1.0")
> -
> self.vm.qmp_log('device_del', id='scsi-hd1')
> self.vm.event_wait('DEVICE_DELETED')
> self.vm.qmp_log('blockdev-del', node_name='hd0')
> diff --git a/tests/qemu-iotests/240.out b/tests/qemu-iotests/240.out
> index 89ed25e506..10dcc42e06 100644
> --- a/tests/qemu-iotests/240.out
> +++ b/tests/qemu-iotests/240.out
> @@ -46,10 +46,8 @@
> {"execute": "device_add", "arguments": {"bus": "scsi0.0", "drive": "hd0", "driver": "scsi-hd", "id": "scsi-hd0"}}
> {"return": {}}
> {"execute": "device_add", "arguments": {"bus": "scsi1.0", "drive": "hd0", "driver": "scsi-hd", "id": "scsi-hd1"}}
> -{"error": {"class": "GenericError", "desc": "Cannot change iothread of active block backend"}}
> -{"execute": "device_del", "arguments": {"id": "scsi-hd0"}}
> {"return": {}}
> -{"execute": "device_add", "arguments": {"bus": "scsi1.0", "drive": "hd0", "driver": "scsi-hd", "id": "scsi-hd1"}}
> +{"execute": "device_del", "arguments": {"id": "scsi-hd0"}}
> {"return": {}}
> {"execute": "device_del", "arguments": {"id": "scsi-hd1"}}
> {"return": {}}
Thanks for fixing it!
CC: qemu-stable now since this was also in the 10.0 release.
Thomas
On Thu, May 29, 2025 at 04:31:47PM -0400, Stefan Hajnoczi wrote:
> Commit 2e8e18c2e463 ("virtio-scsi: add iothread-vq-mapping parameter")
> removed the limitation that virtio-scsi devices must successfully set
> the AioContext on their BlockBackends. This was made possible thanks to
> the QEMU multi-queue block layer.
>
> This change broke qemu-iotests 240, which checks that adding a
> virtio-scsi device with a drive that is already in another AioContext
> will fail.
>
> Update the test to take the relaxed behavior into account. I considered
> removing this test case entirely, but the code coverage still seems
> valuable.
>
> Fixes: 2e8e18c2e463 ("virtio-scsi: add iothread-vq-mapping parameter")
> Reported-by: Thomas Huth <thuth@redhat.com>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
> tests/qemu-iotests/240 | 2 --
> tests/qemu-iotests/240.out | 4 +---
> 2 files changed, 1 insertion(+), 5 deletions(-)
This one has been annoying me - thanks!
Reviewed-by: Eric Blake <eblake@redhat.com>
Tested-by: Eric Blake <eblake@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc.
Virtualization: qemu.org | libguestfs.org
© 2016 - 2025 Red Hat, Inc.