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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).