From: "Daniel P. Berrange" <berrange@redhat.com>
To: Peter Xu <peterx@redhat.com>
Cc: qemu-devel@nongnu.org, Juan Quintela <quintela@redhat.com>,
"Dr . David Alan Gilbert" <dgilbert@redhat.com>
Subject: Re: [Qemu-devel] [PATCH RFC 1/6] io: only allow return path for socket typed
Date: Fri, 19 May 2017 11:03:44 +0100 [thread overview]
Message-ID: <20170519100344.GG4912@redhat.com> (raw)
In-Reply-To: <20170519095143.GC14679@pxdev.xzpeter.org>
On Fri, May 19, 2017 at 05:51:43PM +0800, Peter Xu wrote:
> On Fri, May 19, 2017 at 09:25:38AM +0100, Daniel P. Berrange wrote:
> > On Fri, May 19, 2017 at 02:43:27PM +0800, Peter Xu wrote:
> > > We don't really have a return path for the other types yet. Let's check
> > > this when .get_return_path() is called.
> > >
> > > For this, we introduce a new feature bit, and set it up only for socket
> > > typed IO channels.
> > >
> > > This will help detect earlier failure for postcopy, e.g., logically
> > > speaking postcopy cannot work with "exec:". Before this patch, when we
> > > try to migrate with "migrate -d exec:cat>out", we'll hang the system.
> > > With this patch, we'll get:
> > >
> > > (qemu) migrate -d exec:cat>out
> > > Unable to open return-path for postcopy
> >
> > This is wrong - post-copy migration *can* work with exec: - it just entirely
> > depends on what command you are running. Your example ran a command which is
> > unidirectional, but if you ran 'exec:socat ...' you would have a fully
> > bidirectional channel. Actually the channel is always bi-directional, but
> > 'cat' simply won't ever send data back to QEMU.
>
> Indeed. I should not block postcopy if the user used a TCP tunnel
> between the source and destination in some way, using this exec: way.
> Thanks for pointing that out.
>
> However I still think the idea is needed here. Say, we'd better know
> whether the transport would be able to respond (though current
> approach of "assuming sockets are the only ones that can reply" is not
> a good solution...). Please see below.
>
> >
> > If QEMU hangs when the other end doesn't send data back, that actually seems
> > like a potentially serious bug in migration code. Even if using the normal
> > 'tcp' migration protocol, if the target QEMU server hangs and fails to
> > send data to QEMU on the return path, the source QEMU must never hang.
>
> Firstly I should not say it's a hang - it's actually by-design here
> imho - migration thread is in the last phase now, waiting for a SHUT
> message from destination (which I think is wise). But from the
> behavior, indeed src VM is not usable during the time, just like what
> happened for most postcopy cases on the source side. So, we can see
> that postcopy "assumes" that destination side can reply now.
>
> Meanwhile, I see it reasonable for postcopy to have such an
> assumption. After all, postcopy means "start VM on destination before
> pages are moved over completely", then there must be someone to reply
> to source, no matter whether it'll be via some kind of io channel.
>
> That's why I think we still need the general idea here, that we need
> to know whether destination end is able to reply.
>
> But, I still have no good idea (after knowing this patch won't work)
> on how we can do this... Any further suggestions would be greatly
> welcomed.
IMHO this is nothing more than a documentation issue for the 'exec'
protocol. ie, document that you should provide a bi-directional
transport for live migration.
A uni-directional transport is arguably only valid if you're using
migrate to save/restore the VM state to a file.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2017-05-19 10:03 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-19 6:43 [Qemu-devel] [PATCH RFC 0/6] migration: enable return-path for precopy Peter Xu
2017-05-19 6:43 ` [Qemu-devel] [PATCH RFC 1/6] io: only allow return path for socket typed Peter Xu
2017-05-19 8:25 ` Daniel P. Berrange
2017-05-19 8:30 ` Daniel P. Berrange
2017-05-19 9:55 ` Peter Xu
2017-05-19 12:54 ` Dr. David Alan Gilbert
2017-05-19 9:51 ` Peter Xu
2017-05-19 10:03 ` Daniel P. Berrange [this message]
2017-05-19 12:51 ` Dr. David Alan Gilbert
2017-05-19 12:56 ` Daniel P. Berrange
2017-05-19 13:02 ` Dr. David Alan Gilbert
2017-05-19 13:13 ` Daniel P. Berrange
2017-05-19 14:33 ` Dr. David Alan Gilbert
2017-05-19 14:51 ` Daniel P. Berrange
2017-05-19 18:41 ` Dr. David Alan Gilbert
2017-05-22 8:26 ` Daniel P. Berrange
2017-05-19 6:43 ` [Qemu-devel] [PATCH RFC 2/6] migration: isolate return path on src Peter Xu
2017-05-30 13:31 ` Juan Quintela
2017-05-19 6:43 ` [Qemu-devel] [PATCH RFC 3/6] migration: fix leak of src file on dst Peter Xu
2017-05-30 15:49 ` Juan Quintela
2017-05-31 9:51 ` Juan Quintela
2017-05-19 6:43 ` [Qemu-devel] [PATCH RFC 4/6] migration: shut src return path unconditionally Peter Xu
2017-05-19 19:28 ` Dr. David Alan Gilbert
2017-05-30 15:50 ` Juan Quintela
2017-05-31 7:31 ` Peter Xu
2017-05-31 7:36 ` Juan Quintela
2017-05-30 15:59 ` Juan Quintela
2017-06-05 20:22 ` Eric Blake
2017-06-06 2:00 ` Peter Xu
2017-05-19 6:43 ` [Qemu-devel] [PATCH RFC 5/6] migration: let MigrationState be an QObject Peter Xu
2017-05-30 15:57 ` Juan Quintela
2017-05-31 7:33 ` Peter Xu
2017-05-19 6:43 ` [Qemu-devel] [PATCH RFC 6/6] migration: enable return path for precopy Peter Xu
2017-05-30 15:59 ` Juan Quintela
2017-05-31 7:38 ` Peter Xu
2017-05-31 7:43 ` Juan Quintela
2017-05-31 8:04 ` Peter Xu
2017-05-31 8:12 ` Juan Quintela
2017-05-19 6:48 ` [Qemu-devel] [PATCH RFC 0/6] migration: enable return-path " Peter Xu
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=20170519100344.GG4912@redhat.com \
--to=berrange@redhat.com \
--cc=dgilbert@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/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.