[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 5/5] vhost-user-blk: Check that num-queues is supported by ba
From: |
Raphael Norwitz |
Subject: |
Re: [PATCH 5/5] vhost-user-blk: Check that num-queues is supported by backend |
Date: |
Wed, 28 Apr 2021 20:16:31 +0000 |
User-agent: |
Mutt/1.10.1 (2018-07-13) |
Reviewed-by: Raphael Norwitz <raphael.norwitz@nutanix.com>
On Thu, Apr 22, 2021 at 07:02:21PM +0200, Kevin Wolf wrote:
> 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>
> ---
> 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 b6f4bb3f6f..ac2193abef 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
>
- Re: [PATCH 1/5] vhost-user-blk: Don't reconnect during initialisation, (continued)
Re: [PATCH 1/5] vhost-user-blk: Don't reconnect during initialisation, Philippe Mathieu-Daudé, 2021/04/28
Re: [PATCH 1/5] vhost-user-blk: Don't reconnect during initialisation, Kevin Wolf, 2021/04/29
[PATCH 2/5] vhost-user-blk: Use Error more consistently, Kevin Wolf, 2021/04/22
[PATCH 5/5] vhost-user-blk: Check that num-queues is supported by backend, Kevin Wolf, 2021/04/22
- Re: [PATCH 5/5] vhost-user-blk: Check that num-queues is supported by backend,
Raphael Norwitz <=
[PATCH 4/5] virtio: Fail if iommu_platform is requested, but unsupported, Kevin Wolf, 2021/04/22
[PATCH 3/5] vhost-user-blk: Get more feature flags from vhost device, Kevin Wolf, 2021/04/22