[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH COLO-Frame v17 00/34] COarse-grain LOck-stepping(COL

From: zhanghailiang
Subject: [Qemu-devel] [PATCH COLO-Frame v17 00/34] COarse-grain LOck-stepping(COLO) Virtual Machines for Non-stop Service (FT)
Date: Fri, 3 Jun 2016 15:52:12 +0800

This is the 17th version of COLO FT feature.

Here is only COLO frame part, you can get the whole codes from github:

Migration now switches to use the new QIOChannel API. It only affects COLO's
patch 9 and patch 12, which we used the old qsb buffer before, and we updated
them with the new API. It's only involving tiny changes.

Patch status:
Unreviewed: patch 32 ~ 35
Updated: patch 9, 12, 32

Cc: Stefan Hajnoczi <address@hidden>
Cc: Jeff Cody <address@hidden>
Cc: Kevin Wolf <address@hidden>
Cc: Max Reitz <address@hidden>
Cc: Juan Quintela <address@hidden>
Cc: Amit Shah <address@hidden>
Cc: Dr. David Alan Gilbert <address@hidden>
Cc: Jason Wang <address@hidden>

PS: These series has been in community for a long time, it depends on
Changlong's block-replicaton series, but that has been blocked for a long
time, we really need help on reviewing that and this series.  Thanks.

1. Checkpoint based on proxy in qemu
2. The capability of continuous FT
3. Optimize the VM's downtime during checkpoint

 - Rebase master to use the new QIOChannel API, only affect patch 9 and 12
 - Reorganize some ugly comments
 - Rename colo_sem to colo_exit_sem (patch 21)

 - Fix compile broken due to missing osdep.h
 - Add reviewed-by tag for patch 27, 28, 29
 - Rename the message send/receive helper function (patch 7, 13)
 - Simplify the codes by using some notifier helpers in QEMU (patch 32)
 - Remove the useless check in colo_add_buffer_filter() (patch 33)
 - Remove the previous patch 36, 37 which export filter_buffer_flush()
   to release the buffered packets, we simplify it by stopping buffer 
   filter while doing checkpoint, which will flush the buffered packets
   by default. (patch 34)
 - Go on the shutdown process if encounter error while sending shutdown
   message to SVM. (patch 24)
 - Rename qemu_need_skip_netfilter to qemu_netfilter_can_skip and Remove
   some useless comment. (patch 31, Jason)
 - Call object_new_with_props() directly to add filter in
   colo_add_buffer_filter. (patch 34, Jason)
 - Re-implement colo_set_filter_status() based on COLOBufferFilters
   list. (patch 35)
 - Re-implement colo_flush_filter_packets() based on COLOBufferFilters
   list. (patch 37) 
 - Re-implement the network processing based on netfilter (Jason Wang)
 - Rename 'COLOCommand' to 'COLOMessage'. (Markus's suggestion)
 - Split two new patches (patch 27/28) from patch 29
 - Fix some other comments from Dave and Markus.

 - Refactor colo_*_cmd helper functions to use 'Error **errp' parameter
  instead of return value to indicate success or failure. (patch 10)
 - Remove the optional error message for COLO_EXIT event. (patch 25)
 - Use semaphore to notify colo/colo incoming loop that failover work is
   finished. (patch 26)
 - Move COLO shutdown related codes to colo.c file. (patch 28)
 - Fix memory leak bug for colo incoming loop. (new patch 31)
 - Re-use some existed helper functions to realize the process of
   saving/loading ram and device. (patch 32)
 - Fix some other comments from Dave and Markus.

zhanghailiang (34):
  configure: Add parameter for configure to enable/disable COLO support
  migration: Introduce capability 'x-colo' to migration
  COLO: migrate colo related info to secondary node
  migration: Integrate COLO checkpoint process into migration
  migration: Integrate COLO checkpoint process into loadvm
  COLO/migration: Create a new communication path from destination to
  COLO: Implement COLO checkpoint protocol
  COLO: Add a new RunState RUN_STATE_COLO
  COLO: Save PVM state to secondary side when do checkpoint
  COLO: Load PVM's dirty pages into SVM's RAM cache temporarily
  ram/COLO: Record the dirty pages that SVM received
  COLO: Load VMState into buffer before restore it
  COLO: Flush PVM's cached RAM into SVM's memory
  COLO: Add checkpoint-delay parameter for migrate-set-parameters
  COLO: Synchronize PVM's state to SVM periodically
  COLO failover: Introduce a new command to trigger a failover
  COLO failover: Introduce state to record failover process
  COLO: Implement failover work for Primary VM
  COLO: Implement failover work for Secondary VM
  qmp event: Add COLO_EXIT event to notify users while exited from COLO
  COLO failover: Shutdown related socket fd when do failover
  COLO failover: Don't do failover during loading VM's state
  COLO: Process shutdown command for VM in COLO state
  COLO: Update the global runstate after going into colo state
  savevm: Introduce two helper functions for save/find loadvm_handlers
  migration/savevm: Add new helpers to process the different stages of
  migration/savevm: Export two helper functions for savevm process
  COLO: Separate the process of saving/loading ram and device state
  COLO: Split qemu_savevm_state_begin out of checkpoint process
  filter-buffer: Accept zero interval
  net: Add notifier/callback for netdev init
  COLO/filter: Add each netdev a buffer filter
  COLO: Control the status of buffer filters for PVM
  COLO: Add block replication into colo process

 configure                     |  11 +
 docs/qmp-events.txt           |  16 +
 hmp-commands.hx               |  15 +
 hmp.c                         |  15 +
 hmp.h                         |   1 +
 include/exec/ram_addr.h       |   1 +
 include/migration/colo.h      |  43 +++
 include/migration/failover.h  |  33 ++
 include/migration/migration.h |  16 +
 include/net/filter.h          |   2 +
 include/net/net.h             |   3 +
 include/sysemu/sysemu.h       |   9 +
 migration/Makefile.objs       |   2 +
 migration/colo-comm.c         |  79 ++++
 migration/colo-failover.c     |  84 +++++
 migration/colo.c              | 844 ++++++++++++++++++++++++++++++++++++++++++
 migration/migration.c         |  84 ++++-
 migration/ram.c               | 175 ++++++++-
 migration/savevm.c            | 114 ++++--
 net/filter-buffer.c           |  12 -
 net/net.c                     |  12 +
 qapi-schema.json              | 102 ++++-
 qapi/event.json               |  15 +
 qmp-commands.hx               |  24 +-
 stubs/Makefile.objs           |   1 +
 stubs/migration-colo.c        |  55 +++
 trace-events                  |   8 +
 vl.c                          |  31 +-
 28 files changed, 1744 insertions(+), 63 deletions(-)
 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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]