From: Peter Xu <peterx@redhat.com>
To: "Dr. David Alan Gilbert" <dgilbert@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
"Daniel P. Berrange" <berrange@redhat.com>,
Fam Zheng <famz@redhat.com>, Eric Blake <eblake@redhat.com>
Cc: qemu-devel@nongnu.org, Alexey Perevalov <a.perevalov@samsung.com>,
Juan Quintela <quintela@redhat.com>,
Andrea Arcangeli <aarcange@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v4 00/32] Migration: postcopy failure recovery
Date: Fri, 1 Dec 2017 18:23:51 +0800 [thread overview]
Message-ID: <20171201102351.GG2712@xz-mi> (raw)
In-Reply-To: <20171130200053.GF2248@work-vm>
On Thu, Nov 30, 2017 at 08:00:54PM +0000, Dr. David Alan Gilbert wrote:
> * Peter Xu (peterx@redhat.com) wrote:
> > Tree is pushed here for better reference and testing:
> > github.com/xzpeter postcopy-recovery-support
>
> Hi Peter,
> Do you have a git with this code + your OOB world in?
> I'd like to play with doing recovery and see what happens;
> I still worry a bit about whether the (potentially hung) main loop
> is needed for the new incoming connection to be accepted by the
> destination.
Good question...
I'd say I thought it was okay. The reason is that as long as we run
migrate-incoming command using run-oob=true, it'll be run in iothread,
and our iothread implementation has this in iothread_run():
g_main_context_push_thread_default(iothread->worker_context);
This _should_ mean that from now on NULL context will be replaced with
iothread->worker_context (which is the monitor context, rather than
main thread any more) mostly (I say mostly because there are corner
cases that glib won't use this thread-local var but still the global
one, though it should not be our case I guess).
I tried to confirm this by breaking at the entry of function
socket_accept_incoming_migration() on destination side. Sadly, I was
wrong. It's still running in main().
I found that the problem is that g_source_attach() implementation is
still using the g_main_context_default() rather than
g_main_context_get_thread_default() for the cases where context=NULL
is passed in. I don't know whether this is a glib bug:
g_source_attach (GSource *source,
GMainContext *context)
{
guint result = 0;
...
if (!context)
context = g_main_context_default ();
...
}
I'm CCing some more people who may know better on glib than me.
For now, I think a simple solution can be that, we just call
g_main_context_get_thread_default() explicitly for QIO code. But also
I'd like to see how other people think too.
I'll prepare one branch soon, including the two series (postcopy
recovery + oob), after the solution is settled down. Thanks,
--
Peter Xu
prev parent reply other threads:[~2017-12-01 16:23 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-08 6:00 [Qemu-devel] [PATCH v4 00/32] Migration: postcopy failure recovery Peter Xu
2017-11-08 6:00 ` [Qemu-devel] [PATCH v4 01/32] migration: better error handling with QEMUFile Peter Xu
2017-11-30 10:24 ` Dr. David Alan Gilbert
2017-12-01 8:39 ` Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 02/32] migration: reuse mis->userfault_quit_fd Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 03/32] migration: provide postcopy_fault_thread_notify() Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 04/32] migration: new postcopy-pause state Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 05/32] migration: implement "postcopy-pause" src logic Peter Xu
2017-11-30 10:49 ` Dr. David Alan Gilbert
2017-12-01 8:56 ` Peter Xu
2017-12-01 10:49 ` Dr. David Alan Gilbert
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 06/32] migration: allow dst vm pause on postcopy Peter Xu
2017-11-30 11:17 ` Dr. David Alan Gilbert
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 07/32] migration: allow src return path to pause Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 08/32] migration: allow send_rq to fail Peter Xu
2017-11-30 12:13 ` Dr. David Alan Gilbert
2017-12-01 9:30 ` Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 09/32] migration: allow fault thread to pause Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 10/32] qmp: hmp: add migrate "resume" option Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 11/32] migration: pass MigrationState to migrate_init() Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 12/32] migration: rebuild channel on source Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 13/32] migration: new state "postcopy-recover" Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 14/32] migration: wakeup dst ram-load-thread for recover Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 15/32] migration: new cmd MIG_CMD_RECV_BITMAP Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 16/32] migration: new message MIG_RP_MSG_RECV_BITMAP Peter Xu
2017-11-30 17:21 ` Dr. David Alan Gilbert
2017-12-01 9:37 ` Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 17/32] migration: new cmd MIG_CMD_POSTCOPY_RESUME Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 18/32] migration: new message MIG_RP_MSG_RESUME_ACK Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 19/32] migration: introduce SaveVMHandlers.resume_prepare Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 20/32] migration: synchronize dirty bitmap for resume Peter Xu
2017-11-30 18:40 ` Dr. David Alan Gilbert
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 21/32] migration: setup ramstate " Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 22/32] migration: final handshake for the resume Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 23/32] migration: free SocketAddress where allocated Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 24/32] migration: return incoming task tag for sockets Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 25/32] migration: return incoming task tag for exec Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 26/32] migration: return incoming task tag for fd Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 27/32] migration: store listen task tag Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 28/32] migration: allow migrate_incoming for paused VM Peter Xu
2017-12-01 17:21 ` Dr. David Alan Gilbert
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 29/32] migration: init dst in migration_object_init too Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 30/32] migration: delay the postcopy-active state switch Peter Xu
2017-12-01 12:34 ` Dr. David Alan Gilbert
2017-12-04 4:14 ` Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 31/32] migration, qmp: new command "migrate-pause" Peter Xu
2017-12-01 16:53 ` Dr. David Alan Gilbert
2017-12-04 4:48 ` Peter Xu
2017-12-04 17:10 ` Dr. David Alan Gilbert
2017-12-05 2:52 ` Peter Xu
2017-11-08 6:01 ` [Qemu-devel] [PATCH v4 32/32] migration, hmp: new command "migrate_pause" Peter Xu
2017-11-30 20:00 ` [Qemu-devel] [PATCH v4 00/32] Migration: postcopy failure recovery Dr. David Alan Gilbert
2017-12-01 10:23 ` Peter Xu [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=20171201102351.GG2712@xz-mi \
--to=peterx@redhat.com \
--cc=a.perevalov@samsung.com \
--cc=aarcange@redhat.com \
--cc=berrange@redhat.com \
--cc=dgilbert@redhat.com \
--cc=eblake@redhat.com \
--cc=famz@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=stefanha@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.