From patchwork Fri Feb 17 02:18:26 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhang Chen X-Patchwork-Id: 9578631 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 0F97B6043A for ; Fri, 17 Feb 2017 02:21:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 01FAE28633 for ; Fri, 17 Feb 2017 02:21:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EAB4B28685; Fri, 17 Feb 2017 02:21:45 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 7ECCD28633 for ; Fri, 17 Feb 2017 02:21:45 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ceY8a-00074J-Nj; Fri, 17 Feb 2017 02:19:08 +0000 Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ceY8Z-00072L-2t for xen-devel@lists.xenproject.org; Fri, 17 Feb 2017 02:19:07 +0000 Received: from [85.158.139.211] by server-17.bemta-5.messagelabs.com id FE/26-14587-A9D56A85; Fri, 17 Feb 2017 02:19:06 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrMIsWRWlGSWpSXmKPExsViPb2gRXdm7LI IgyOTlCy+b5nM5MDocfjDFZYAxijWzLyk/IoE1ox1R+YyFnQbVlyeP5G1gfGFchcjJ4eEgJ/E 411bmUFsIYFaicY7L9m6GLmA7JWMEi1dt6CcXYwSizb/AqtiEzCQmHNlImMXIweHiEC5xO0V4 iA1zAIfGSW+dV5lB4kLCwRITFxbBlLOIqAq8fj7UrBWXgEfiVnfNjFBLJaTuHmuEyzOKeAr0X tqHgtIqxBQzYxzIhDlghInZz5hAbGZBSQkDr54wQxSIiGgKNF2jRdiiq7ElbVtUBM1JbatPsc GUWIlMXWrJ0RYUGLn8wtsExhFZiEZOgvJ0AWMTKsYNYpTi8pSi3QNjfWSijLTM0pyEzNzdA0N TPVyU4uLE9NTcxKTivWS83M3MQIDnAEIdjD+2+Z5iFGSg0lJlPco87IIIb6k/JTKjMTijPii0 pzU4kOMMhwcShK8e2KAcoJFqempFWmZOcBYg0lLcPAoifD+AknzFhck5hZnpkOkTjHqcpy6cf olkxBLXn5eqpQ47wKQIgGQoozSPLgRsLi/xCgrJczLCHSUEE9BalFuZgmq/CtGcQ5GJWHefJA pPJl5JXCbXgEdwQR0RGfEUpAjShIRUlINjB0XDl/XlL7lGrFZJ6boXD5TkkbjptXJW58nhs8x SrxTkJIc0lAYekGwedLSNP7m+cf6/M44z9ons8Jdl02auULcpnjqXo+TD4WrfHV+m353T759N DtXIEnv9/+PfLFS78W/f/vDa2NxN9dp3ZXuR3PvtHEWRy3z2nbYMu7B+6k7rIs2bayOVWIpzk g01GIuKk4EAAngcvj2AgAA X-Env-Sender: zhangchen.fnst@cn.fujitsu.com X-Msg-Ref: server-7.tower-206.messagelabs.com!1487297939!85163690!4 X-Originating-IP: [59.151.112.132] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 9.2.3; banners=-,-,- X-VirusChecked: Checked Received: (qmail 11822 invoked from network); 17 Feb 2017 02:19:05 -0000 Received: from cn.fujitsu.com (HELO heian.cn.fujitsu.com) (59.151.112.132) by server-7.tower-206.messagelabs.com with SMTP; 17 Feb 2017 02:19:05 -0000 X-IronPort-AV: E=Sophos;i="5.22,518,1449504000"; d="scan'208";a="15685703" Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 17 Feb 2017 10:19:03 +0800 Received: from G08CNEXCHPEKD03.g08.fujitsu.local (unknown [10.167.33.85]) by cn.fujitsu.com (Postfix) with ESMTP id 365E447C4E88; Fri, 17 Feb 2017 10:19:02 +0800 (CST) Received: from localhost.localdomain (10.167.226.56) by G08CNEXCHPEKD03.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 17 Feb 2017 10:19:02 +0800 From: Zhang Chen To: Xen devel , Wei Liu , Ian Jackson Date: Fri, 17 Feb 2017 10:18:26 +0800 Message-ID: <1487297909-1885-5-git-send-email-zhangchen.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1487297909-1885-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> References: <1487297909-1885-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.226.56] X-yoursite-MailScanner-ID: 365E447C4E88.AF35D X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: zhangchen.fnst@cn.fujitsu.com Cc: Zhang Chen , Li Zhijian , eddie , Yang Hongyang , Bian Naimeng Subject: [Xen-devel] [PATCH V3 4/7] COLO-Proxy: Setup userspace colo-proxy on secondary side X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP In this patch we add a function to close COLO kernel Proxy on secondary side. Signed-off-by: Zhang Chen --- tools/libxl/libxl_colo_restore.c | 8 ++++++-- tools/libxl/libxl_create.c | 8 ++++++-- tools/libxl/libxl_types.idl | 1 + tools/libxl/xl_cmdimpl.c | 18 +++++++++++++++--- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/tools/libxl/libxl_colo_restore.c b/tools/libxl/libxl_colo_restore.c index 6a96328..c6d239a 100644 --- a/tools/libxl/libxl_colo_restore.c +++ b/tools/libxl/libxl_colo_restore.c @@ -774,8 +774,12 @@ static void colo_setup_checkpoint_devices(libxl__egc *egc, STATE_AO_GC(crs->ao); - cds->device_kind_flags = (1 << LIBXL__DEVICE_KIND_VIF) | - (1 << LIBXL__DEVICE_KIND_VBD); + if (crs->cps.is_userspace_proxy) + cds->device_kind_flags = (1 << LIBXL__DEVICE_KIND_VBD); + else + cds->device_kind_flags = (1 << LIBXL__DEVICE_KIND_VIF) | + (1 << LIBXL__DEVICE_KIND_VBD); + cds->callback = colo_restore_setup_cds_done; cds->ao = ao; cds->domid = crs->domid; diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index e741b9a..409945a 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -1633,11 +1633,15 @@ static int do_domain_create(libxl_ctx *ctx, libxl_domain_config *d_config, cdcs->dcs.domid_soft_reset = INVALID_DOMID; if (cdcs->dcs.restore_params.checkpointed_stream == - LIBXL_CHECKPOINTED_STREAM_COLO) + LIBXL_CHECKPOINTED_STREAM_COLO) { cdcs->dcs.colo_proxy_script = cdcs->dcs.restore_params.colo_proxy_script; - else + cdcs->dcs.crs.cps.is_userspace_proxy = + libxl_defbool_val(cdcs->dcs.restore_params.userspace_colo_proxy); + } else { cdcs->dcs.colo_proxy_script = NULL; + cdcs->dcs.crs.cps.is_userspace_proxy = false; + } libxl__ao_progress_gethow(&cdcs->dcs.aop_console_how, aop_console_how); cdcs->domid_out = domid; diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl index 1bd2057..89c2c9d 100644 --- a/tools/libxl/libxl_types.idl +++ b/tools/libxl/libxl_types.idl @@ -390,6 +390,7 @@ libxl_domain_restore_params = Struct("domain_restore_params", [ ("checkpointed_stream", integer), ("stream_version", uint32, {'init_val': '1'}), ("colo_proxy_script", string), + ("userspace_colo_proxy", libxl_defbool), ]) libxl_sched_params = Struct("sched_params",[ diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 99baeef..b286d47 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -162,6 +162,7 @@ struct domain_create { char *extra_config; /* extra config string */ const char *restore_file; char *colo_proxy_script; + bool userspace_colo_proxy; int migrate_fd; /* -1 means none */ int send_back_fd; /* -1 means none */ char **migration_domname_r; /* from malloc */ @@ -3024,6 +3025,8 @@ start: params.stream_version = (hdr.mandatory_flags & XL_MANDATORY_FLAG_STREAMv2) ? 2 : 1; params.colo_proxy_script = dom_info->colo_proxy_script; + libxl_defbool_set(¶ms.userspace_colo_proxy, + dom_info->userspace_colo_proxy); ret = libxl_domain_create_restore(ctx, &d_config, &domid, restore_fd, @@ -4824,7 +4827,8 @@ static void migrate_receive(int debug, int daemonize, int monitor, int pause_after_migration, int send_fd, int recv_fd, libxl_checkpointed_stream checkpointed, - char *colo_proxy_script) + char *colo_proxy_script, + bool userspace_colo_proxy) { uint32_t domid; int rc, rc2; @@ -4852,6 +4856,7 @@ static void migrate_receive(int debug, int daemonize, int monitor, dom_info.migration_domname_r = &migration_domname; dom_info.checkpointed_stream = checkpointed; dom_info.colo_proxy_script = colo_proxy_script; + dom_info.userspace_colo_proxy = userspace_colo_proxy; rc = create_domain(&dom_info); if (rc < 0) { @@ -5051,11 +5056,13 @@ int main_migrate_receive(int argc, char **argv) int debug = 0, daemonize = 1, monitor = 1, pause_after_migration = 0; libxl_checkpointed_stream checkpointed = LIBXL_CHECKPOINTED_STREAM_NONE; int opt; + bool userspace_colo_proxy = false; char *script = NULL; static struct option opts[] = { {"colo", 0, 0, 0x100}, /* It is a shame that the management code for disk is not here. */ {"coloft-script", 1, 0, 0x200}, + {"userspace-colo-proxy", 0, 0, 0x300}, COMMON_LONG_OPTS }; @@ -5079,6 +5086,9 @@ int main_migrate_receive(int argc, char **argv) case 0x200: script = optarg; break; + case 0x300: + userspace_colo_proxy = true; + break; case 'p': pause_after_migration = 1; break; @@ -5090,7 +5100,7 @@ int main_migrate_receive(int argc, char **argv) } migrate_receive(debug, daemonize, monitor, pause_after_migration, STDOUT_FILENO, STDIN_FILENO, - checkpointed, script); + checkpointed, script, userspace_colo_proxy); return EXIT_SUCCESS; } @@ -8984,11 +8994,13 @@ int main_remus(int argc, char **argv) "-r", daemonize ? "" : " -e"); } else { - xasprintf(&rune, "exec %s %s xl migrate-receive %s %s %s %s", + xasprintf(&rune, "exec %s %s xl migrate-receive %s %s %s %s %s", ssh_command, host, "--colo", r_info.netbufscript ? "--coloft-script" : "", r_info.netbufscript ? r_info.netbufscript : "", + libxl_defbool_val(r_info.userspace_colo_proxy) ? + "--userspace-colo-proxy" : "", daemonize ? "" : " -e"); } }