From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60801) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bUvGN-0000id-8n for qemu-devel@nongnu.org; Wed, 03 Aug 2016 08:27:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bUvGH-0006a1-Iq for qemu-devel@nongnu.org; Wed, 03 Aug 2016 08:27:06 -0400 Received: from szxga01-in.huawei.com ([58.251.152.64]:30386) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bUvGG-0006V6-OG for qemu-devel@nongnu.org; Wed, 03 Aug 2016 08:27:01 -0400 From: zhanghailiang Date: Wed, 3 Aug 2016 20:25:38 +0800 Message-ID: <1470227172-13704-1-git-send-email-zhang.zhanghailiang@huawei.com> MIME-Version: 1.0 Content-Type: text/plain Subject: [Qemu-devel] [PATCH COLO-Frame v18 00/34] COarse-grain LOck-stepping(COLO) Virtual Machines for Non-stop Service (FT) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: amit.shah@redhat.com, quintela@redhat.com, dgilbert@redhat.com, peter.huangpeng@huawei.com, eddie.dong@intel.com, wency@cn.fujitsu.com, lizhijian@cn.fujitsu.com, zhangchen.fnst@cn.fujitsu.com, xiecl.fnst@cn.fujitsu.com, zhanghailiang , Stefan Hajnoczi , Jason Wang This is the 18th version of COLO FT feature. It is based on '[PATCH v24 00/12] Block replication for continuous checkpoints' series. The complete codes can be found from the link: https://github.com/coloft/qemu/commits/colo-v3.1-periodic-mode For block part, Stefan promised to merge it. So we would like to update this series to the latest upstream. For this series, only patch 32 ~ 34 are not reviewed, so please help review them. Thanks. Cc: Stefan Hajnoczi Cc: Jason Wang TODO: 1. Checkpoint based on proxy in qemu 2. The capability of continuous FT 3. Optimize the VM's downtime during checkpoint 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 source 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 entry migration/savevm: Add new helpers to process the different stages of loadvm 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 | 113 ++++-- migration/trace-events | 8 + 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 +++ vl.c | 30 +- 28 files changed, 1744 insertions(+), 61 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 -- 1.8.3.1