From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Yang Hongyang <yanghy@cn.fujitsu.com>, xen-devel@lists.xen.org
Cc: wei.liu2@citrix.com, ian.campbell@citrix.com,
wency@cn.fujitsu.com, guijianfeng@cn.fujitsu.com,
yunhong.jiang@intel.com, eddie.dong@intel.com,
rshriram@cs.ubc.ca, ian.jackson@eu.citrix.com
Subject: Re: [PATCH v6 COLO 05/15] send store mfn and console mfn to xl before resuming secondary vm
Date: Mon, 8 Jun 2015 13:16:48 +0100 [thread overview]
Message-ID: <557587B0.8060505@citrix.com> (raw)
In-Reply-To: <1433735159-26739-6-git-send-email-yanghy@cn.fujitsu.com>
On 08/06/15 04:45, Yang Hongyang wrote:
> From: Wen Congyang <wency@cn.fujitsu.com>
>
> We will call libxl__xc_domain_restore_done() to rebuild secondary vm. But
> we need store mfn and console mfn when rebuilding secondary vm. So make
> restore_results is a function pointers in callbacks struct and struct
> {save,restore}_callbacks, and use this callback to send store mfn and
> console mfn to xl.
>
> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
> Signed-off-by: Yang Hongyang <yanghy@cn.fujitsu.com>
> CC: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> tools/libxc/include/xenguest.h | 8 ++++++++
> tools/libxc/xc_sr_restore.c | 8 ++++++--
> tools/libxl/libxl_colo_restore.c | 5 -----
> tools/libxl/libxl_create.c | 1 +
> tools/libxl/libxl_save_msgs_gen.pl | 2 +-
> 5 files changed, 16 insertions(+), 8 deletions(-)
>
> diff --git a/tools/libxc/include/xenguest.h b/tools/libxc/include/xenguest.h
> index d5902a6..50096b9 100644
> --- a/tools/libxc/include/xenguest.h
> +++ b/tools/libxc/include/xenguest.h
> @@ -130,6 +130,14 @@ struct restore_callbacks {
> /* Enable qemu-dm logging dirty pages to xen */
> int (*switch_qemu_logdirty)(int domid, unsigned enable, void *data); /* HVM only */
>
> + /*
> + * callback to send store mfn and console mfn to xl
> + * if we want to resume vm before xc_domain_save()
> + * exits.
> + */
> + void (*restore_results)(unsigned long store_mfn, unsigned long console_mfn,
> + void *data);
> +
> /* callback to restore toolstack specific data */
> int (*toolstack_restore)(uint32_t domid, const uint8_t *buf,
> uint32_t size, void* data);
> diff --git a/tools/libxc/xc_sr_restore.c b/tools/libxc/xc_sr_restore.c
> index 982a70e..5e2efd8 100644
> --- a/tools/libxc/xc_sr_restore.c
> +++ b/tools/libxc/xc_sr_restore.c
> @@ -524,7 +524,10 @@ static int handle_checkpoint(struct xc_sr_context *ctx)
> if ( rc )
> goto err;
>
> - /* TODO: call restore_results */
> + /* call restore_results */
I would drop this comment. It is entirely redundant now.
Otherwise, looks good.
~Andrew
> + ctx->restore.callbacks->restore_results(ctx->restore.xenstore_gfn,
> + ctx->restore.console_gfn,
> + ctx->restore.callbacks->data);
>
> /* Resume secondary vm */
> ret = ctx->restore.callbacks->postcopy(ctx->restore.callbacks->data);
> @@ -793,7 +796,8 @@ int xc_domain_restore2(xc_interface *xch, int io_fd, uint32_t dom,
> /* this is COLO restore */
> assert(callbacks->suspend &&
> callbacks->checkpoint &&
> - callbacks->postcopy);
> + callbacks->postcopy &&
> + callbacks->restore_results);
> }
>
> IPRINTF("In experimental %s", __func__);
> diff --git a/tools/libxl/libxl_colo_restore.c b/tools/libxl/libxl_colo_restore.c
> index 6c39758..c613c15 100644
> --- a/tools/libxl/libxl_colo_restore.c
> +++ b/tools/libxl/libxl_colo_restore.c
> @@ -153,11 +153,6 @@ static void colo_resume_vm(libxl__egc *egc,
> return;
> }
>
> - /*
> - * TODO: get store mfn and console mfn
> - * We should call the callback restore_results in
> - * xc_domain_restore() before resuming the guest.
> - */
> libxl__xc_domain_restore_done(egc, dcs, 0, 0, 0);
>
> return;
> diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
> index 1548b70..6e307f3 100644
> --- a/tools/libxl/libxl_create.c
> +++ b/tools/libxl/libxl_create.c
> @@ -1157,6 +1157,7 @@ static void domcreate_bootloader_done(libxl__egc *egc,
> rc = ERROR_INVAL;
> goto out;
> }
> + callbacks->restore_results = libxl__srm_callout_callback_restore_results;
>
> if (checkpointed_stream == LIBXL_CHECKPOINTED_STREAM_COLO) {
> crs->ao = ao;
> diff --git a/tools/libxl/libxl_save_msgs_gen.pl b/tools/libxl/libxl_save_msgs_gen.pl
> index fbb2d67..2ecd25d 100755
> --- a/tools/libxl/libxl_save_msgs_gen.pl
> +++ b/tools/libxl/libxl_save_msgs_gen.pl
> @@ -32,7 +32,7 @@ our @msgs = (
> # toolstack_save done entirely `by hand'
> [ 7, 'rcxW', "toolstack_restore", [qw(uint32_t domid
> BLOCK tsdata)] ],
> - [ 8, 'r', "restore_results", ['unsigned long', 'store_mfn',
> + [ 8, 'rcx', "restore_results", ['unsigned long', 'store_mfn',
> 'unsigned long', 'console_mfn'] ],
> [ 9, 'srW', "complete", [qw(int retval
> int errnoval)] ],
next prev parent reply other threads:[~2015-06-08 12:16 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-08 3:45 [PATCH v6 COLO 00/15] COarse-grain LOck-stepping Virtual Machines for Non-stop Service Yang Hongyang
2015-06-08 3:45 ` [PATCH v6 COLO 01/15] docs: add colo readme Yang Hongyang
2015-06-16 10:56 ` Ian Campbell
2015-06-24 9:13 ` Yang Hongyang
2015-06-08 3:45 ` [PATCH v6 COLO 02/15] secondary vm suspend/resume/checkpoint code Yang Hongyang
2015-06-12 14:23 ` Wei Liu
2015-06-12 14:51 ` Ian Jackson
2015-06-15 2:10 ` Yang Hongyang
2015-06-15 1:55 ` Yang Hongyang
2015-06-16 11:42 ` Ian Jackson
2015-06-08 3:45 ` [PATCH v6 COLO 03/15] primary vm suspend/get_dirty_pfn/resume/checkpoint code Yang Hongyang
2015-06-16 11:05 ` Ian Campbell
2015-06-08 3:45 ` [PATCH v6 COLO 04/15] libxc/restore: support COLO restore Yang Hongyang
2015-06-08 10:39 ` Andrew Cooper
2015-06-08 14:06 ` Yang Hongyang
2015-06-08 3:45 ` [PATCH v6 COLO 05/15] send store mfn and console mfn to xl before resuming secondary vm Yang Hongyang
2015-06-08 12:16 ` Andrew Cooper [this message]
2015-06-08 14:08 ` Yang Hongyang
2015-06-16 11:13 ` Ian Campbell
2015-06-08 3:45 ` [PATCH v6 COLO 06/15] libxc/save: support COLO save Yang Hongyang
2015-06-08 13:04 ` Andrew Cooper
2015-06-09 3:15 ` Yang Hongyang
2015-06-09 7:20 ` Andrew Cooper
2015-06-09 8:45 ` Yang Hongyang
2015-06-09 8:51 ` Andrew Cooper
2015-06-09 9:09 ` Yang Hongyang
2015-06-09 9:10 ` Andrew Cooper
2015-06-09 9:16 ` Yang Hongyang
2015-06-09 3:18 ` Yang Hongyang
2015-06-08 3:45 ` [PATCH v6 COLO 07/15] implement the cmdline for COLO Yang Hongyang
2015-06-16 11:19 ` Ian Campbell
2015-06-25 4:06 ` Yang Hongyang
2015-07-14 15:14 ` Ian Campbell
2015-06-08 3:45 ` [PATCH v6 COLO 08/15] Support colo mode for qemu disk Yang Hongyang
2015-06-16 11:21 ` Ian Campbell
2015-06-08 3:45 ` [PATCH v6 COLO 09/15] COLO: use qemu block replication Yang Hongyang
2015-06-16 11:22 ` Ian Campbell
2015-06-08 3:45 ` [PATCH v6 COLO 10/15] COLO proxy: implement setup/teardown of COLO proxy module Yang Hongyang
2015-06-16 11:24 ` Ian Campbell
2015-06-16 11:26 ` Ian Campbell
2015-06-25 5:22 ` Yang Hongyang
2015-06-25 8:39 ` Ian Campbell
2015-06-25 8:48 ` Yang Hongyang
2015-06-08 3:45 ` [PATCH v6 COLO 11/15] COLO proxy: preresume, postresume and checkpoint Yang Hongyang
2015-06-08 3:45 ` [PATCH v6 COLO 12/15] COLO nic: implement COLO nic subkind Yang Hongyang
2015-06-12 14:35 ` Wei Liu
2015-06-15 2:13 ` Yang Hongyang
2015-06-08 3:45 ` [PATCH v6 COLO 13/15] setup and control colo proxy on primary side Yang Hongyang
2015-06-08 3:45 ` [PATCH v6 COLO 14/15] setup and control colo proxy on secondary side Yang Hongyang
2015-06-08 3:45 ` [PATCH v6 COLO 15/15] cmdline switches and config vars to control colo-proxy Yang Hongyang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=557587B0.8060505@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=eddie.dong@intel.com \
--cc=guijianfeng@cn.fujitsu.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=rshriram@cs.ubc.ca \
--cc=wei.liu2@citrix.com \
--cc=wency@cn.fujitsu.com \
--cc=xen-devel@lists.xen.org \
--cc=yanghy@cn.fujitsu.com \
--cc=yunhong.jiang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.