[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 0/9] Incoming migration coroutine
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 0/9] Incoming migration coroutine |
Date: |
Thu, 18 Oct 2012 12:22:26 +0200 |
Juan,
here is the implementation of migration-in-a-coroutine, applying on top
of your pull request. With these patches, the monitor (and in the future
the NBD server) is 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.
Thanks,
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 | 47 +++++++++-----
qemu-file.h | 23 ++++---
savevm.c | 188 ++++++++++++++++++++++++++++++++-----------------------
8 file modificati, 215 inserzioni(+), 155 rimozioni(-)
--
1.7.12.1
- [Qemu-devel] [PATCH 0/9] Incoming migration coroutine,
Paolo Bonzini <=