From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jens Freimann <jfreimann@redhat.com>
Cc: peter.maydell@linaro.org, jasowang@redhat.com,
qemu-devel@nongnu.org, dgilbert@redhat.com
Subject: Re: [PATCH 1/4] net/virtio: fix dev_unplug_pending
Date: Wed, 20 Nov 2019 05:39:21 -0500 [thread overview]
Message-ID: <20191120053833-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20191114141613.15804-1-jfreimann@redhat.com>
On Thu, Nov 14, 2019 at 03:16:10PM +0100, Jens Freimann wrote:
> .dev_unplug_pending is set up by virtio-net code indepent of whether
> failover=on was set for the device or not. This gives a wrong result when
> we check for existing primary devices in migration code.
>
> Fix this by actually calling dev_unplug_pending() instead of just
> checking if the function pointer was set. When the feature was not
> negotiated dev_unplug_pending() will always return false. This prevents
> us from going into the wait-unplug state when there's no primary device
> present.
>
> Fixes: 9711cd0dfc3f ("net/virtio: add failover support")
> Signed-off-by: Jens Freimann <jfreimann@redhat.com>
> Reported-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This isn't really a series, is it?
Just a bunch of independent patches...
anyway:
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> hw/net/virtio-net.c | 3 +++
> migration/savevm.c | 3 ++-
> 2 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
> index 97a5113f7e..946039c0dc 100644
> --- a/hw/net/virtio-net.c
> +++ b/hw/net/virtio-net.c
> @@ -3124,6 +3124,9 @@ static bool primary_unplug_pending(void *opaque)
> VirtIODevice *vdev = VIRTIO_DEVICE(dev);
> VirtIONet *n = VIRTIO_NET(vdev);
>
> + if (!virtio_vdev_has_feature(vdev, VIRTIO_NET_F_STANDBY)) {
> + return false;
> + }
> return n->primary_dev ? n->primary_dev->pending_deleted_event : false;
> }
>
> diff --git a/migration/savevm.c b/migration/savevm.c
> index 966a9c3bdb..a71b930b91 100644
> --- a/migration/savevm.c
> +++ b/migration/savevm.c
> @@ -1119,7 +1119,8 @@ int qemu_savevm_nr_failover_devices(void)
> int n = 0;
>
> QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
> - if (se->vmsd && se->vmsd->dev_unplug_pending) {
> + if (se->vmsd && se->vmsd->dev_unplug_pending &&
> + se->vmsd->dev_unplug_pending(se->opaque)) {
> n++;
> }
> }
> --
> 2.21.0
prev parent reply other threads:[~2019-11-20 10:40 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-14 14:16 [PATCH 1/4] net/virtio: fix dev_unplug_pending Jens Freimann
2019-11-14 14:16 ` [PATCH 2/4] net/virtio: return early when failover primary alread added Jens Freimann
2019-11-20 10:40 ` Michael S. Tsirkin
2019-11-14 14:16 ` [PATCH 3/4] net/virtio: avoid passing NULL to qdev_set_parent_bus Jens Freimann
2019-11-20 10:46 ` Michael S. Tsirkin
2019-11-20 12:03 ` Jens Freimann
2019-11-20 12:05 ` Michael S. Tsirkin
2019-11-14 14:16 ` [PATCH 4/4] net/virtio: return error when device_opts arg is NULL Jens Freimann
2019-11-20 10:47 ` Michael S. Tsirkin
2019-11-20 10:39 ` Michael S. Tsirkin [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191120053833-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=dgilbert@redhat.com \
--cc=jasowang@redhat.com \
--cc=jfreimann@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.