From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jens Freimann <jfreimann@redhat.com>
Cc: pkrempa@redhat.com, berrange@redhat.com,
Eduardo Habkost <ehabkost@redhat.com>,
aadam@redhat.com, qemu-devel@nongnu.org,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
laine@redhat.com, ailan@redhat.com
Subject: Re: [Qemu-devel] [PATCH 3/4] net/virtio: add failover support
Date: Fri, 7 Jun 2019 10:32:06 -0400 [thread overview]
Message-ID: <20190607103059-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20190607141407.73hzf5w6vqjegaja@jenstp.localdomain>
On Fri, Jun 07, 2019 at 04:14:07PM +0200, Jens Freimann wrote:
> On Tue, Jun 04, 2019 at 08:00:19PM +0100, Dr. David Alan Gilbert wrote:
> > * Michael S. Tsirkin (mst@redhat.com) wrote:
> > > On Tue, Jun 04, 2019 at 03:43:21PM +0200, Jens Freimann wrote:
> > > > On Mon, Jun 03, 2019 at 04:36:48PM -0300, Eduardo Habkost wrote:
> > > > > On Mon, Jun 03, 2019 at 10:24:56AM +0200, Jens Freimann wrote:
> > > > > > On Fri, May 31, 2019 at 06:47:48PM -0300, Eduardo Habkost wrote:
> > > > > > > On Thu, May 30, 2019 at 04:56:45PM +0200, Jens Freimann wrote:
> > > > > > > > On Tue, May 28, 2019 at 11:04:15AM -0400, Michael S. Tsirkin wrote:
> > > > > > > > > On Tue, May 21, 2019 at 10:45:05AM +0100, Dr. David Alan Gilbert wrote:
> > > > > > > > > > * Jens Freimann (jfreimann@redhat.com) wrote:
> > > > > > Why is it bad to fully re-create the device in case of a failed migration?
> > > > >
> > > > > Bad or not, I thought the whole point of doing it inside QEMU was
> > > > > to do something libvirt wouldn't be able to do (namely,
> > > > > unplugging the device while not freeing resources). If we are
> > > > > doing something that management software is already capable of
> > > > > doing, what's the point?
> > > >
> > > > Event though management software seems to be capable of it, a failover
> > > > implementation has never happened. As Michael says network failover is
> > > > a mechanism (there's no good reason not to use a PT device if it is
> > > > available), not a policy. We are now trying to implement it in a
> > > > simple way, contained within QEMU.
> > > >
> > > > > Quoting a previous message from this thread:
> > > > >
> > > > > On Thu, May 30, 2019 at 02:09:42PM -0400, Michael S. Tsirkin wrote:
> > > > > | > On Thu, May 30, 2019 at 07:00:23PM +0100, Dr. David Alan Gilbert wrote:
> > > > > | > > This patch series is very
> > > > > | > > odd precisely because it's trying to do the unplug itself in the
> > > > > | > > migration phase rather than let the management layer do it - so unless
> > > > > | > > it's nailed down how to make sure that's really really bullet proof
> > > > > | > > then we've got to go back and ask the question about whether we should
> > > > > | > > really fix it so it can be done by the management layer.
> > > > > | > >
> > > > > | > > Dave
> > > > > | >
> > > > > | > management already said they can't because files get closed and
> > > > > | > resources freed on unplug and so they might not be able to re-add device
> > > > > | > on migration failure. We do it in migration because that is
> > > > > | > where failures can happen and we can recover.
> > > >
> > > > This is something that I can work on as well, but it doesn't have to
> > > > be part of this patch set in my opinion. Let's say migration fails and we can't
> > > > re-plug the primary device. We can still use the standby (virtio-net)
> > > > device which would only mean slower networking. How likely is it that
> > > > the primary device is grabbed by another VM between unplugging and
> > > > migration failure anyway?
> > > >
> > > > regards,
> > > > Jens
> > >
> > > I think I agree with Eduardo it's very important to handle this corner
> > > case correctly. Fast networking outside migration is why people use
> > > failover at all. Someone who can live with a slower virtio would use
> > > just that.
> > >
> > > And IIRC this corner case is exactly why libvirt could not
> > > implement it correctly itself and had to push it up the stack
> > > until it fell off the cliff :).
> >
> > So I think we need to have the code that shows we can cope with the
> > corner cases - or provide a way for libvirt to handle it (which is
> > my strong preference).
>
> Would this work: We add a new migration state MIGRATE_WAIT_UNPLUG (or
> a better more generic name) which tells libvirt that migration has not
> started yet because we are waiting for the guest. And extend the qmp
> events for the migration state. When we know the device was
> sucessfully unplugged we sent a qmp event DEVICE_DELETED or a new one
> DEVICE_DELETED_PARTIALLY (not sure about that yet), let migration
> start and set the migration state to active?
>
> To do a partial unplug I imagine, we have to separate vfio(-pci) code
> to differ between release of resources (fds, mappings etc) and unplug
> (I haven't yet found out how it works in vfio). In the failover case
> we only do the unplug part but not the release part.
>
> regards,
> Jens
I think the first is done in vfio_exitfn and the second in
vfio_instance_finalize.
--
MST
next prev parent reply other threads:[~2019-06-07 15:31 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-17 12:58 [Qemu-devel] [PATCH 0/4] add failover feature for assigned network devices Jens Freimann
2019-05-17 12:58 ` [Qemu-devel] [PATCH 1/4] migration: allow unplug during migration for failover devices Jens Freimann
2019-05-21 9:33 ` Dr. David Alan Gilbert
2019-05-21 9:47 ` Daniel P. Berrangé
2019-05-23 8:01 ` Jens Freimann
2019-05-23 15:37 ` Dr. David Alan Gilbert
2019-05-17 12:58 ` [Qemu-devel] [PATCH 2/4] qdev/qbus: Add hidden device support Jens Freimann
2019-05-21 11:33 ` Michael S. Tsirkin
2019-05-17 12:58 ` [Qemu-devel] [PATCH 3/4] net/virtio: add failover support Jens Freimann
2019-05-21 9:45 ` Dr. David Alan Gilbert
2019-05-30 14:56 ` Jens Freimann
2019-05-30 17:46 ` Michael S. Tsirkin
2019-05-30 18:00 ` Dr. David Alan Gilbert
2019-05-30 18:09 ` Michael S. Tsirkin
2019-05-30 18:22 ` Eduardo Habkost
2019-05-30 23:06 ` Michael S. Tsirkin
2019-05-31 17:01 ` Eduardo Habkost
2019-05-31 18:04 ` Michael S. Tsirkin
2019-05-31 18:42 ` Eduardo Habkost
2019-05-31 18:45 ` Dr. David Alan Gilbert
2019-05-31 20:29 ` Alex Williamson
2019-05-31 21:05 ` Michael S. Tsirkin
2019-05-31 21:59 ` Eduardo Habkost
2019-06-03 8:59 ` Dr. David Alan Gilbert
2019-05-31 20:43 ` Michael S. Tsirkin
2019-05-31 21:03 ` Eduardo Habkost
2019-06-03 8:06 ` Dr. David Alan Gilbert
2019-05-30 19:08 ` Dr. David Alan Gilbert
2019-05-30 19:21 ` Michael S. Tsirkin
2019-05-31 8:23 ` Dr. David Alan Gilbert
2019-06-05 15:23 ` Daniel P. Berrangé
2019-05-30 18:17 ` Eduardo Habkost
2019-05-30 19:09 ` Dr. David Alan Gilbert
2019-05-31 21:47 ` Eduardo Habkost
2019-06-03 8:24 ` Jens Freimann
2019-06-03 9:26 ` Jens Freimann
2019-06-03 18:10 ` Laine Stump
2019-06-03 18:46 ` Alex Williamson
2019-06-05 15:20 ` Daniel P. Berrangé
2019-06-06 15:00 ` Roman Kagan
2019-06-03 19:36 ` Eduardo Habkost
2019-06-04 13:43 ` Jens Freimann
2019-06-04 14:09 ` Eduardo Habkost
2019-06-04 17:06 ` Michael S. Tsirkin
2019-06-04 19:00 ` Dr. David Alan Gilbert
2019-06-07 14:14 ` Jens Freimann
2019-06-07 14:32 ` Michael S. Tsirkin [this message]
2019-06-07 17:51 ` Dr. David Alan Gilbert
2019-06-05 14:36 ` Daniel P. Berrangé
2019-06-05 16:04 ` Laine Stump
2019-06-05 16:19 ` Daniel P. Berrangé
2019-05-17 12:58 ` [Qemu-devel] [PATCH 4/4] vfio/pci: unplug failover primary device before migration Jens Freimann
2019-05-20 22:56 ` [Qemu-devel] [PATCH 0/4] add failover feature for assigned network devices Alex Williamson
2019-05-21 7:21 ` Jens Freimann
2019-05-21 11:37 ` Michael S. Tsirkin
2019-05-21 18:49 ` Jens Freimann
2019-05-29 0:14 ` si-wei liu
2019-05-29 2:54 ` Michael S. Tsirkin
2019-06-03 18:06 ` Laine Stump
2019-06-03 18:12 ` Michael S. Tsirkin
2019-06-03 18:18 ` Laine Stump
2019-06-06 21:49 ` Michael S. Tsirkin
2019-05-29 2:40 ` Michael S. Tsirkin
2019-05-29 7:48 ` Jens Freimann
2019-05-30 18:12 ` Michael S. Tsirkin
2019-05-31 15:12 ` Jens Freimann
2019-05-21 14:18 ` Alex Williamson
2019-05-21 8:37 ` Daniel P. Berrangé
2019-05-21 10:10 ` Michael S. Tsirkin
2019-05-21 19:17 ` Jens Freimann
2019-05-21 21:43 ` Michael S. Tsirkin
2019-06-11 15:42 ` Laine Stump
2019-06-11 15:51 ` Michael S. Tsirkin
2019-06-11 16:12 ` Laine Stump
2019-06-12 9:11 ` Daniel P. Berrangé
2019-06-12 11:59 ` Jens Freimann
2019-06-12 15:54 ` Laine Stump
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=20190607103059-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=aadam@redhat.com \
--cc=ailan@redhat.com \
--cc=berrange@redhat.com \
--cc=dgilbert@redhat.com \
--cc=ehabkost@redhat.com \
--cc=jfreimann@redhat.com \
--cc=laine@redhat.com \
--cc=pkrempa@redhat.com \
--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.