From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: quintela@redhat.com
Subject: [Qemu-devel] [PATCH 0/9] Incoming migration coroutine
Date: Fri, 21 Sep 2012 19:04:57 +0200 [thread overview]
Message-ID: <1348247106-27936-1-git-send-email-pbonzini@redhat.com> (raw)
Juan,
here is the implementation of migration-in-a-coroutine, applying on top
of your recently-posted 41-patch series. With these patches, the monitor
(and in the future the NBD server) is responsive during migration.
The first seven patches are just cleanups, only the last two
actually implement the feature. They are the opposite change of the
nonblocking->blocking change that you implemented for the migration
thread. However, the change is much simpler because we have no timers,
and because of the use of coroutines.
Without coroutines (and as in non-threaded migration), you have
to proceed in two steps: first collect data in a buffer, then
write it. This lets you handle EAGAIN only at precise points in
buffered_flush/buffered_put_buffer, so that you can restart writing
in migrate_fd_put_notify. This "checkpointing" is the reason why
QEMUFileBuffered exists. With coroutines, you can just stop whenever
you want with qemu_coroutine_yield. As soon as select tells you that you
can read, you'll re-enter directly in qemu_get_buffer, read more data
and pass it to the loading routines.
Thanks,
Paolo
Paolo Bonzini (9):
migration: unify stdio-based QEMUFile operations
migration: consolidate QEMUFile methods in a single QEMUFileOps struct
migration: add qemu_get_fd
migration: replace qemu_stdio_fd with qemu_get_fd
migration: clean up server sockets and handlers before invoking process_incoming_migration
migration: close socket QEMUFile from socket_close
migration: move qemu_fclose to process_incoming_migration
migration: handle EAGAIN while reading QEMUFile
migration: move process_incoming_migration to a coroutine
buffered_file.c | 21 +++++--
migration-exec.c | 5 +-
migration-fd.c | 3 +-
migration-tcp.c | 10 +--
migration-unix.c | 10 +--
migration.c | 27 +++++++-
qemu-file.h | 23 ++++---
savevm.c | 188 ++++++++++++++++++++++++++++++++-----------------------
8 file modificati, 181 inserzioni(+), 106 rimozioni(-)
--
1.7.12
next reply other threads:[~2012-09-21 17:05 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-21 17:04 Paolo Bonzini [this message]
2012-09-21 17:04 ` [Qemu-devel] [PATCH 1/9] migration: unify stdio-based QEMUFile operations Paolo Bonzini
2012-09-21 17:04 ` [Qemu-devel] [PATCH 2/9] migration: consolidate QEMUFile methods in a single QEMUFileOps struct Paolo Bonzini
2012-09-21 17:05 ` [Qemu-devel] [PATCH 3/9] migration: add qemu_get_fd Paolo Bonzini
2012-09-21 17:05 ` [Qemu-devel] [PATCH 4/9] migration: replace qemu_stdio_fd with qemu_get_fd Paolo Bonzini
2012-09-21 17:05 ` [Qemu-devel] [PATCH 5/9] migration: clean up server sockets and handlers before invoking process_incoming_migration Paolo Bonzini
2012-09-21 17:05 ` [Qemu-devel] [PATCH 6/9] migration: close socket QEMUFile from socket_close Paolo Bonzini
2012-09-21 17:05 ` [Qemu-devel] [PATCH 7/9] migration: move qemu_fclose to process_incoming_migration Paolo Bonzini
2012-09-21 17:05 ` [Qemu-devel] [PATCH 8/9] migration: handle EAGAIN while reading QEMUFile Paolo Bonzini
2012-09-21 17:05 ` [Qemu-devel] [PATCH 9/9] migration: move process_incoming_migration to a coroutine Paolo Bonzini
-- strict thread matches above, loose matches on Subject: below --
2012-10-18 10:22 [Qemu-devel] [PATCH 0/9] Incoming migration coroutine Paolo Bonzini
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=1348247106-27936-1-git-send-email-pbonzini@redhat.com \
--to=pbonzini@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).