[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 12/12] vdpa: fix network breakage after cancelling migration
From: |
Eugenio Perez Martin |
Subject: |
Re: [PATCH 12/12] vdpa: fix network breakage after cancelling migration |
Date: |
Thu, 15 Feb 2024 17:15:52 +0100 |
On Wed, Feb 14, 2024 at 1:39 PM Si-Wei Liu <si-wei.liu@oracle.com> wrote:
>
> Fix an issue where cancellation of ongoing migration ends up
> with no network connectivity.
>
> When canceling migration, SVQ will be switched back to the
> passthrough mode, but the right call fd is not programed to
> the device and the svq's own call fd is still used. At the
> point of this transitioning period, the shadow_vqs_enabled
> hadn't been set back to false yet, causing the installation
> of call fd inadvertently bypassed.
>
> Fixes: a8ac88585da1 ("vhost: Add Shadow VirtQueue call forwarding
> capabilities")
> Cc: Eugenio Pérez <eperezma@redhat.com>
> Acked-by: Jason Wang <jasowang@redhat.com>
> Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
> ---
> hw/virtio/vhost-vdpa.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c
> index 004110f..dfeca8b 100644
> --- a/hw/virtio/vhost-vdpa.c
> +++ b/hw/virtio/vhost-vdpa.c
> @@ -1468,7 +1468,15 @@ static int vhost_vdpa_set_vring_call(struct vhost_dev
> *dev,
>
> /* Remember last call fd because we can switch to SVQ anytime. */
> vhost_svq_set_svq_call_fd(svq, file->fd);
> - if (v->shadow_vqs_enabled) {
> + /*
> + * When SVQ is transitioning to off, shadow_vqs_enabled has
> + * not been set back to false yet, but the underlying call fd
> + * will have to switch back to the guest notifier to signal the
> + * passthrough virtqueues. In other situations, SVQ's own call
> + * fd shall be used to signal the device model.
> + */
> + if (v->shadow_vqs_enabled &&
> + v->shared->svq_switching != SVQ_TSTATE_DISABLING) {
I think it would be great to not need to add more status variables to
vhost_vdpa (or any struct).
What if we recover the call file descriptor at vhost_vdpa_svqs_stop?
This way everything is more symmetrical as kick and call are set by
vhost_vdpa_svqs_start.
Thanks!
> return 0;
> }
>
> --
> 1.8.3.1
>
- Re: [PATCH 04/12] vdpa: factor out vhost_vdpa_net_get_nc_vdpa, (continued)
- [PATCH 05/12] vdpa: add vhost_vdpa_set_address_space_id trace, Si-Wei Liu, 2024/02/14
- [PATCH 02/12] vdpa: no repeat setting shadow_data, Si-Wei Liu, 2024/02/14
- [PATCH 01/12] vdpa: add back vhost_vdpa_net_first_nc_vdpa, Si-Wei Liu, 2024/02/14
- [PATCH 07/12] vdpa: add vhost_vdpa_set_dev_vring_base trace for svq mode, Si-Wei Liu, 2024/02/14
- [PATCH 08/12] vdpa: add trace events for vhost_vdpa_net_load_cmd, Si-Wei Liu, 2024/02/14
- [PATCH 09/12] vdpa: add trace event for vhost_vdpa_net_load_mq, Si-Wei Liu, 2024/02/14
- [PATCH 10/12] vdpa: define SVQ transitioning state for mode switching, Si-Wei Liu, 2024/02/14
- [PATCH 11/12] vdpa: indicate transitional state for SVQ switching, Si-Wei Liu, 2024/02/14
- [PATCH 12/12] vdpa: fix network breakage after cancelling migration, Si-Wei Liu, 2024/02/14
- Re: [PATCH 12/12] vdpa: fix network breakage after cancelling migration,
Eugenio Perez Martin <=