[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 14/14] vhost-user-blk: Check that num-queues is supported by backe
From: |
Kevin Wolf |
Subject: |
[PULL 14/14] vhost-user-blk: Check that num-queues is supported by backend |
Date: |
Fri, 14 May 2021 18:31:24 +0200 |
Creating a device with a number of queues that isn't supported by the
backend is pointless, the device won't work properly and the error
messages are rather confusing.
Just fail to create the device if num-queues is higher than what the
backend supports.
Since the relationship between num-queues and the number of virtqueues
depends on the specific device, this is an additional value that needs
to be initialised by the device. For convenience, allow leaving it 0 if
the check should be skipped. This makes sense for vhost-user-net where
separate vhost devices are used for the queues and custom initialisation
code is needed to perform the check.
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1935031
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Raphael Norwitz <raphael.norwitz@nutanix.com>
Message-Id: <20210429171316.162022-7-kwolf@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
include/hw/virtio/vhost.h | 2 ++
hw/block/vhost-user-blk.c | 1 +
hw/virtio/vhost-user.c | 5 +++++
3 files changed, 8 insertions(+)
diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h
index 4a8bc75415..21a9a52088 100644
--- a/include/hw/virtio/vhost.h
+++ b/include/hw/virtio/vhost.h
@@ -74,6 +74,8 @@ struct vhost_dev {
int nvqs;
/* the first virtqueue which would be used by this vhost dev */
int vq_index;
+ /* if non-zero, minimum required value for max_queues */
+ int num_queues;
uint64_t features;
uint64_t acked_features;
uint64_t backend_features;
diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c
index c7e502f4c7..c6210fad0c 100644
--- a/hw/block/vhost-user-blk.c
+++ b/hw/block/vhost-user-blk.c
@@ -324,6 +324,7 @@ static int vhost_user_blk_connect(DeviceState *dev, Error
**errp)
}
s->connected = true;
+ s->dev.num_queues = s->num_queues;
s->dev.nvqs = s->num_queues;
s->dev.vqs = s->vhost_vqs;
s->dev.vq_index = 0;
diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c
index ded0c10453..ee57abe045 100644
--- a/hw/virtio/vhost-user.c
+++ b/hw/virtio/vhost-user.c
@@ -1909,6 +1909,11 @@ static int vhost_user_backend_init(struct vhost_dev
*dev, void *opaque)
return err;
}
}
+ if (dev->num_queues && dev->max_queues < dev->num_queues) {
+ error_report("The maximum number of queues supported by the "
+ "backend is %" PRIu64, dev->max_queues);
+ return -EINVAL;
+ }
if (virtio_has_feature(features, VIRTIO_F_IOMMU_PLATFORM) &&
!(virtio_has_feature(dev->protocol_features,
--
2.30.2
- [PULL 00/14] Block layer patches, Kevin Wolf, 2021/05/14
- [PULL 01/14] qcow2: set bdi->is_dirty, Kevin Wolf, 2021/05/14
- [PULL 02/14] block: Fix Transaction leak in bdrv_root_attach_child(), Kevin Wolf, 2021/05/14
- [PULL 05/14] block/export: improve vu_blk_sect_range_ok(), Kevin Wolf, 2021/05/14
- [PULL 03/14] block: Fix Transaction leak in bdrv_reopen_multiple(), Kevin Wolf, 2021/05/14
- [PULL 04/14] qapi: spelling fix (addtional), Kevin Wolf, 2021/05/14
- [PULL 10/14] vhost-user-blk: Don't reconnect during initialisation, Kevin Wolf, 2021/05/14
- [PULL 06/14] test: new qTest case to test the vhost-user-blk-server, Kevin Wolf, 2021/05/14
- [PULL 08/14] vhost-user-blk-test: test discard/write zeroes invalid inputs, Kevin Wolf, 2021/05/14
- [PULL 14/14] vhost-user-blk: Check that num-queues is supported by backend,
Kevin Wolf <=
- [PULL 09/14] vhost-user-blk: Make sure to set Error on realize failure, Kevin Wolf, 2021/05/14
- [PULL 12/14] vhost-user-blk: Get more feature flags from vhost device, Kevin Wolf, 2021/05/14
- [PULL 11/14] vhost-user-blk: Improve error reporting in realize, Kevin Wolf, 2021/05/14
- [PULL 07/14] tests/qtest: add multi-queue test case to vhost-user-blk-test, Kevin Wolf, 2021/05/14
- [PULL 13/14] virtio: Fail if iommu_platform is requested, but unsupported, Kevin Wolf, 2021/05/14
- Re: [PULL 00/14] Block layer patches, Philippe Mathieu-Daudé, 2021/05/16