Message ID | 1351878665-32413-1-git-send-email-pbonzini@redhat.com |
---|---|
State | New |
Headers | show |
Paolo Bonzini <pbonzini@redhat.com> writes: > Anthony, > > The following changes since commit 4ba79505f43bd0ace35c3fe42197eb02e7e0478e: > > Merge remote-tracking branch 'kraxel/pixman.v3' into staging (2012-11-01 11:14:39 -0500) > > are available in the git repository at: Pulled. Thanks. Regards, Anthony Liguori > > > git://github.com/bonzini/qemu.git migr-coroutine > > for you to fetch changes up to 82a4da79fd6c108400637143f8439c2364bdb21e: > > migration: move process_incoming_migration to a coroutine (2012-11-02 18:35:08 +0100) > > With these patches, the monitor and the NBD server are responsive during > migration. > > The first ten patches are just cleanups, generalizing some parts of > QEMUFile and improving the way migration sockets are closed. > > 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. > > Paolo > ---------------------------------------------------------------- > Paolo Bonzini (12): > 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: use migrate_fd_close in migrate_fd_cleanup > migration: use closesocket, not close > migration: xxx_close will only be called once > 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 | 19 +++--- > migration-fd.c | 36 +++++------ > migration-tcp.c | 19 +++--- > migration-unix.c | 17 +++-- > migration.c | 46 ++++++++++---- > qemu-file.h | 23 ++++--- > savevm.c | 188 ++++++++++++++++++++++++++++++++----------------------- > 8 file modificati, 215 inserzioni(+), 154 rimozioni(-) > -- > 1.7.12.1