From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50153) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1atYXp-0008OV-Ez for qemu-devel@nongnu.org; Fri, 22 Apr 2016 06:42:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1atYXm-00031i-Jy for qemu-devel@nongnu.org; Fri, 22 Apr 2016 06:42:41 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58120) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1atYXm-00031M-Cp for qemu-devel@nongnu.org; Fri, 22 Apr 2016 06:42:38 -0400 Date: Fri, 22 Apr 2016 11:42:31 +0100 From: "Dr. David Alan Gilbert" Message-ID: <20160422104230.GF2239@work-vm> References: <1460096797-14916-1-git-send-email-zhang.zhanghailiang@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1460096797-14916-1-git-send-email-zhang.zhanghailiang@huawei.com> Subject: Re: [Qemu-devel] [PATCH COLO-Frame v16 for-2.7 00/35] 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: zhanghailiang Cc: qemu-devel@nongnu.org, amit.shah@redhat.com, quintela@redhat.com, eblake@redhat.com, peter.huangpeng@huawei.com, eddie.dong@intel.com, yunhong.jiang@intel.com, wency@cn.fujitsu.com, lizhijian@cn.fujitsu.com, arei.gonglei@huawei.com, stefanha@redhat.com, hongyang.yang@easystack.cn, zhangchen.fnst@cn.fujitsu.com, xiecl.fnst@cn.fujitsu.com, armbru@redhat.com, Jason Wang * zhanghailiang (zhang.zhanghailiang@huawei.com) wrote: > This is the 16th version of COLO (Still only support periodic checkpoint). OK, so the main migration code in here looks OK now (still need one block R-b's and the net R-b's from Jason) - which of the other COLO patch series does this depend on? It doesn't need Zhang Chen's COLO-Compare - that's all for the later real colo world; but I assume it depends on Changlong Xie's Block replication world? Dave > > Here is only COLO frame part, you can get the whole codes from github: > https://github.com/coloft/qemu/commits/colo-v2.7-periodic-mode > > There are little changes for this series except the netfilter releated part. > > Patch status: > Unreviewed: patch 21, 32 ~ 35 > Updated: patch 7, 13, 32 ~ 35 > > 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 > > v16: > - Fix compile broken due to missing osdep.h > - Add reviewed-by tag for patch 27, 28, 29 > - Rename the COLO 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 for COLO, we simplify it by stopping > buffer filter while doing checkpoint, which will flush the buffered > packets by default. (patch 34) > v15: > - 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) > v14: > - 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. > > v13: > - 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 (35): > 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 > QEMUSizedBuffer: Introduce two help functions for qsb > 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 qsb 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: manage 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 | 42 +++ > include/migration/failover.h | 33 ++ > include/migration/migration.h | 16 + > include/migration/qemu-file.h | 3 +- > 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 | 855 ++++++++++++++++++++++++++++++++++++++++++ > migration/migration.c | 90 ++++- > migration/qemu-file-buf.c | 61 +++ > migration/ram.c | 175 ++++++++- > migration/savevm.c | 114 ++++-- > net/filter-buffer.c | 12 - > net/net.c | 12 + > qapi-schema.json | 104 ++++- > qapi/event.json | 15 + > qmp-commands.hx | 24 +- > stubs/Makefile.objs | 1 + > stubs/migration-colo.c | 55 +++ > trace-events | 8 + > vl.c | 31 +- > 30 files changed, 1824 insertions(+), 65 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 > > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK