Oops. Some patches were missing. Will resend. Yoshi 2010/12/24 Yoshiaki Tamura <tamura.yoshiaki@xxxxxxxxxxxxx>: > Hi, > > This patch series is a revised version of Kemari for KVM, which > applied comments for the previous post. The current code is based on > qemu.git 9ed5726c043958359b0f1fa44ab3e4f25f9d9a47. > > The changes from v0.2 -> v0.2.1 are: > > > - Move event-tap to net/block layer and use stubs (Blue, Paul, MST, Kevin) > - Tap bdrv_aio_flush (Marcelo) > - Remove multiwrite interface in event-tap (Stefan) > - Fix event-tap to use pio/mmio to replay both net/block (Stefan) > - Improve error handling in event-tap (Stefan) > - Fix leak in event-tap (Stefan) > - Revise virtio last_avail_idx manipulation (MST) > - Clean up migration.c hook (Marcelo) > - Make deleting change state handler robust (Isaku, Anthony) > > Note that Making iov save/load common (Stefan) was no good becase of > compile issue with ram_addr_t. > > The changes from v0.1.1 -> v0.2 are: > > - Introduce a queue in event-tap to make VM sync live. > - Change transaction receiver to a state machine for async receiving. > - Replace net/block layer functions with event-tap proxy functions. > - Remove dirty bitmap optimization for now. > - convert DPRINTF() in ft_trans_file to trace functions. > - convert fprintf() in ft_trans_file to error_report(). > - improved error handling in ft_trans_file. > - add a tmp pointer to qemu_del_vm_change_state_handler. > > The changes from v0.1 -> v0.1.1 are: > > - events are tapped in net/block layer instead of device emulation layer. > - Introduce a new option for -incoming to accept FT transaction. > > - Removed writev() support to QEMUFile and FdMigrationState for now. > I would post this work in a different series. > > - Modified virtio-blk save/load handler to send inuse variable to > correctly replay. > > - Removed configure --enable-ft-mode. > - Removed unnecessary check for qemu_realloc(). > > The first 6 patches modify several functions of qemu to prepare > introducing Kemari specific components. > > The next 6 patches are the components of Kemari. They introduce > event-tap and the FT transaction protocol file based on buffered file. > The design document of FT transaction protocol can be found at, > http://wiki.qemu.org/images/b/b1/Kemari_sender_receiver_0.5a.pdf > > Then the following 2 patches modifies net/block layer functions with > event-tap functions. Please note that if Kemari is off, event-tap > will just passthrough, and there is most no intrusion to exisiting > functions including normal live migration. > > Finally, the migration layer are modified to support Kemari in the > last 3 patches. Again, there shouldn't be any affection if a user > doesn't specify Kemari specific options. The transaction is now async > on both sender and receiver side. The sender side respects the > max_downtime to decide when to switch from async to sync mode. > > The repository contains all patches I'm sending with this message. > For those who want to try, please pull the following repository. It > also includes dirty bitmap optimization which aren't ready for posting > yet. To remove the dirty bitmap optimization, please look at HEAD~7 > of the tree. Also, please note that it's based on a bit older version > of qemu.git because of testing. There aren't major conflicts with the > patch series posted. > > git://kemari.git.sourceforge.net/gitroot/kemari/kemari > > Happy Holidays! > > Yoshi > > Yoshiaki Tamura (19): > Make QEMUFile buf expandable, and introduce qemu_realloc_buffer() and > qemu_clear_buffer(). > Introduce read() to FdMigrationState. > Introduce skip_header parameter to qemu_loadvm_state(). > qemu-char: export socket_set_nodelay(). > vl.c: add deleted flag for deleting the handler. > virtio: update last_avail_idx when inuse is decreased. > Introduce fault tolerant VM transaction QEMUFile and ft_mode. > savevm: introduce util functions to control ft_trans_file from savevm > layer. > Introduce event-tap. > Call init handler of event-tap at main() in vl.c. > ioport: insert event_tap_ioport() to ioport_write(). > Insert event_tap_mmio() to cpu_physical_memory_rw() in exec.c. > net: insert event-tap to qemu_send_packet() and > qemu_sendv_packet_async(). > block: insert event-tap to bdrv_aio_writev() and bdrv_aio_flush(). > savevm: introduce qemu_savevm_trans_{begin,commit}. > migration: introduce migrate_ft_trans_{put,get}_ready(), and modify > migrate_fd_put_ready() when ft_mode is on. > migration-tcp: modify tcp_accept_incoming_migration() to handle > ft_mode, and add a hack not to close fd when ft_mode is enabled. > Introduce -k option to enable FT migration mode (Kemari). > migration: add a parser to accept FT migration incoming mode. > > Makefile.objs | 1 + > Makefile.target | 1 + > block.c | 11 + > event-tap.c | 806 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > event-tap.h | 42 +++ > exec.c | 4 + > ft_trans_file.c | 606 +++++++++++++++++++++++++++++++++++++++++ > ft_trans_file.h | 72 +++++ > hmp-commands.hx | 7 +- > hw/hw.h | 7 + > hw/virtio.c | 8 +- > ioport.c | 2 + > migration-tcp.c | 60 ++++- > migration.c | 280 +++++++++++++++++++- > migration.h | 3 + > net.c | 9 + > qemu-char.c | 2 +- > qemu-tool.c | 23 ++ > qemu_socket.h | 1 + > qmp-commands.hx | 7 +- > savevm.c | 280 ++++++++++++++++++- > sysemu.h | 4 +- > trace-events | 25 ++ > vl.c | 16 +- > 24 files changed, 2248 insertions(+), 29 deletions(-) > create mode 100644 event-tap.c > create mode 100644 event-tap.h > create mode 100644 ft_trans_file.c > create mode 100644 ft_trans_file.h > > > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html