From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wen Congyang Subject: Re: [PATCH v5 COLOPre 08/18] tools/libxl: introduce libxl__domain_restore_device_model to load qemu state Date: Tue, 26 Jan 2016 14:17:08 +0800 Message-ID: <56A70F64.50104@cn.fujitsu.com> References: <1450338502-27335-1-git-send-email-wency@cn.fujitsu.com> <1450338502-27335-9-git-send-email-wency@cn.fujitsu.com> <20160125184100.GN14977@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20160125184100.GN14977@char.us.oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Konrad Rzeszutek Wilk Cc: Wei Liu , Ian Campbell , Andrew Cooper , Jiang Yunhong , Ian Jackson , xen devel , Shriram Rajagopalan , Dong Eddie , Gui Jianfeng , Anthony Perard , Yang Hongyang List-Id: xen-devel@lists.xenproject.org On 01/26/2016 02:41 AM, Konrad Rzeszutek Wilk wrote: > On Thu, Dec 17, 2015 at 03:48:12PM +0800, Wen Congyang wrote: >> From: Yang Hongyang >> >> In normal migration, the qemu state was passed to qemu as a parameter. > > /was/is/ > >> With COLO, Secondary vm is running. So we will do the following steps >> at every checkpoint: >> 1. suspend both primary vm and secondary vm >> 2. sync the state >> 3. resume both primary vm and secondary vm >> Primary will send qemu's state in step2, and >> Secondary's qemu should read it and restore the state before it > > s/Secondary/secondary/ >> is resumed. We can not pass the state to qemu as a parameter because >> Secondary QEMU already started at this point, so we introduce > > s/Secondary/secondary/ >> libxl__domain_restore_device_model() to do it. >> This API should be called before resuming secondary vm. > > s/before/MUST/ s/should/MUST/? Thanks Wen Congyang > >> >> Signed-off-by: Yang Hongyang >> Signed-off-by: Wen Congyang >> Cc: Anthony Perard >> --- >> tools/libxl/libxl_dom_save.c | 20 ++++++++++++++++++++ >> tools/libxl/libxl_internal.h | 4 ++++ >> tools/libxl/libxl_qmp.c | 10 ++++++++++ >> 3 files changed, 34 insertions(+) >> >> diff --git a/tools/libxl/libxl_dom_save.c b/tools/libxl/libxl_dom_save.c >> index 0bfa5fc..88cb1b3 100644 >> --- a/tools/libxl/libxl_dom_save.c >> +++ b/tools/libxl/libxl_dom_save.c >> @@ -609,6 +609,26 @@ int libxl__restore_emulator_xenstore_data(libxl__domain_create_state *dcs, >> return rc; >> } >> >> +int libxl__domain_restore_device_model(libxl__gc *gc, uint32_t domid, >> + const char *restore_file) >> +{ >> + int rc; >> + >> + switch (libxl__device_model_version_running(gc, domid)) { >> + case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL: >> + /* not supported now */ > > Perhaps: Will never be supported. > >> + rc = ERROR_INVAL; >> + break; >> + case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN: >> + rc = libxl__qmp_restore(gc, domid, restore_file); >> + break; >> + default: >> + rc = ERROR_INVAL; >> + } >> + >> + return rc; >> +} >> + > > > . >