This is the 19th version of COLO frame series. According to the suggestion of Juan and Amit, I dropped parts of the optimization patches to make it easier for review.
Besides, I discarded the network related patches since the development of COLO proxy goes well, It is very likely to be merged in QEMU 2.8, Please see [PATCH V12 02/10] colo-compare: introduce colo compare initialization for more information. The original network related patches in this series are to buffer the network packets till a checkpointing be successfully achieved, just like Remus does in XEN, but these patches will be reverted in COLO compare series. So here, it is unnecessary to add them. You can still test this series like before. Or refer to docs/COLO-FT.txt. It is based on 'Block replication' series which has been merged in Stefan's branch https://github.com/stefanha/qemu/commits/block-next. The complete codes can be found from the link: https://github.com/coloft/qemu/commits/colo-v4.1-periodic-mode Please review. Thanks ;) TODO: 1. Checkpoint based on proxy in qemu 2. The capability of continuous FT 3. Optimize the VM's downtime during checkpoint v19: - Add documentation about COLO (patch 21) - Dropped network related patches - Fix parts of patches' title and comments zhanghailiang (22): migration: Introduce capability 'x-colo' to migration COLO: migrate COLO related info to secondary node migration: Enter into COLO mode after migration if COLO is enabled migration: Switch to COLO process after finishing loadvm COLO: Establish a new communicating path for COLO COLO: Introduce checkpointing protocol COLO: Add a new RunState RUN_STATE_COLO COLO: Send PVM state to secondary side when do checkpoint COLO: Load VMState into QIOChannelBuffer before restore it COLO: Add checkpoint-delay parameter for migrate-set-parameters COLO: Synchronize PVM's state to SVM periodically COLO: Add 'x-colo-lost-heartbeat' command to trigger failover COLO: Introduce state to record failover process COLO: Implement the process of failover for primary VM COLO: Implement failover work for secondary VM COLO: Shutdown related socket fd while do failover COLO: Don't do failover while loading VM's state COLO: Handle shutdown command for VM in COLO state COLO: Update the global runstate after going into colo state COLO: Add block replication into colo process docs: Add documentation for COLO feature configure: Support enable/disable COLO feature configure | 11 + docs/COLO-FT.txt | 190 ++++++++++++ hmp-commands.hx | 15 + hmp.c | 15 + hmp.h | 1 + include/migration/colo.h | 40 +++ include/migration/failover.h | 33 ++ include/migration/migration.h | 11 + include/sysemu/sysemu.h | 3 + migration/Makefile.objs | 2 + migration/colo-comm.c | 72 +++++ migration/colo-failover.c | 84 +++++ migration/colo.c | 694 ++++++++++++++++++++++++++++++++++++++++++ migration/migration.c | 86 +++++- migration/ram.c | 37 ++- migration/trace-events | 6 + qapi-schema.json | 88 +++++- qmp-commands.hx | 24 +- stubs/Makefile.objs | 1 + stubs/migration-colo.c | 51 ++++ vl.c | 30 +- 21 files changed, 1468 insertions(+), 26 deletions(-) create mode 100644 docs/COLO-FT.txt create mode 100644 include/migration/colo.h create mode 100644 include/migration/failover.h create mode 100644 migration/colo-comm.c create mode 100644 migration/colo-failover.c create mode 100644 migration/colo.c create mode 100644 stubs/migration-colo.c -- 1.8.3.1