From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: Ian Jackson <Ian.Jackson@eu.citrix.com>,
Xen-devel <xen-devel@lists.xen.org>
Subject: Re: [PATCH 09/29] [HACK] tools/libxc: save/restore v2 framework
Date: Thu, 11 Sep 2014 11:37:35 +0100 [thread overview]
Message-ID: <54117B6F.6010200@citrix.com> (raw)
In-Reply-To: <1410431645.6166.69.camel@kazak.uk.xensource.com>
On 11/09/14 11:34, Ian Campbell wrote:
> On Wed, 2014-09-10 at 18:10 +0100, Andrew Cooper wrote:
>> For testing purposes, the environmental variable "XG_MIGRATION_V2" allows the
>> two save/restore codepaths to coexist, and have a runtime switch.
>>
>> It is indended that once this series is less RFC, the v2 framework will
>> completely replace v1.
> I think we are now at the point where this hack needs to be dropped from
> the series.
One problem is remus. My plan when dropping this patch was to drop all
of xc_domain_{save/restore}.c as well, but without remus migration-v2
support available, this will break existing set-ups.
One option might be to have legacy and v2 sitting properly side-by-side
in libxc for the transition period.
~Andrew
>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> ---
>> tools/libxc/Makefile | 1 +
>> tools/libxc/saverestore/common.h | 15 +++++++++++++++
>> tools/libxc/saverestore/restore.c | 23 +++++++++++++++++++++++
>> tools/libxc/saverestore/save.c | 19 +++++++++++++++++++
>> tools/libxc/xc_domain_restore.c | 8 ++++++++
>> tools/libxc/xc_domain_save.c | 6 ++++++
>> tools/libxc/xenguest.h | 13 +++++++++++++
>> 7 files changed, 85 insertions(+)
>> create mode 100644 tools/libxc/saverestore/common.h
>> create mode 100644 tools/libxc/saverestore/restore.c
>> create mode 100644 tools/libxc/saverestore/save.c
>>
>> diff --git a/tools/libxc/Makefile b/tools/libxc/Makefile
>> index 3b04027..564e805 100644
>> --- a/tools/libxc/Makefile
>> +++ b/tools/libxc/Makefile
>> @@ -45,6 +45,7 @@ GUEST_SRCS-y :=
>> GUEST_SRCS-y += xg_private.c xc_suspend.c
>> ifeq ($(CONFIG_MIGRATE),y)
>> GUEST_SRCS-y += xc_domain_restore.c xc_domain_save.c
>> +GUEST_SRCS-y += $(wildcard saverestore/*.c)
>> GUEST_SRCS-y += xc_offline_page.c xc_compression.c
>> else
>> GUEST_SRCS-y += xc_nomigrate.c
>> diff --git a/tools/libxc/saverestore/common.h b/tools/libxc/saverestore/common.h
>> new file mode 100644
>> index 0000000..f1aff44
>> --- /dev/null
>> +++ b/tools/libxc/saverestore/common.h
>> @@ -0,0 +1,15 @@
>> +#ifndef __COMMON__H
>> +#define __COMMON__H
>> +
>> +#include "../xg_private.h"
>> +
>> +#endif
>> +/*
>> + * Local variables:
>> + * mode: C
>> + * c-file-style: "BSD"
>> + * c-basic-offset: 4
>> + * tab-width: 4
>> + * indent-tabs-mode: nil
>> + * End:
>> + */
>> diff --git a/tools/libxc/saverestore/restore.c b/tools/libxc/saverestore/restore.c
>> new file mode 100644
>> index 0000000..6624baa
>> --- /dev/null
>> +++ b/tools/libxc/saverestore/restore.c
>> @@ -0,0 +1,23 @@
>> +#include "common.h"
>> +
>> +int xc_domain_restore2(xc_interface *xch, int io_fd, uint32_t dom,
>> + unsigned int store_evtchn, unsigned long *store_mfn,
>> + domid_t store_domid, unsigned int console_evtchn,
>> + unsigned long *console_mfn, domid_t console_domid,
>> + unsigned int hvm, unsigned int pae, int superpages,
>> + int checkpointed_stream,
>> + struct restore_callbacks *callbacks)
>> +{
>> + IPRINTF("In experimental %s", __func__);
>> + return -1;
>> +}
>> +
>> +/*
>> + * Local variables:
>> + * mode: C
>> + * c-file-style: "BSD"
>> + * c-basic-offset: 4
>> + * tab-width: 4
>> + * indent-tabs-mode: nil
>> + * End:
>> + */
>> diff --git a/tools/libxc/saverestore/save.c b/tools/libxc/saverestore/save.c
>> new file mode 100644
>> index 0000000..f6ad734
>> --- /dev/null
>> +++ b/tools/libxc/saverestore/save.c
>> @@ -0,0 +1,19 @@
>> +#include "common.h"
>> +
>> +int xc_domain_save2(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iters,
>> + uint32_t max_factor, uint32_t flags,
>> + struct save_callbacks* callbacks, int hvm)
>> +{
>> + IPRINTF("In experimental %s", __func__);
>> + return -1;
>> +}
>> +
>> +/*
>> + * Local variables:
>> + * mode: C
>> + * c-file-style: "BSD"
>> + * c-basic-offset: 4
>> + * tab-width: 4
>> + * indent-tabs-mode: nil
>> + * End:
>> + */
>> diff --git a/tools/libxc/xc_domain_restore.c b/tools/libxc/xc_domain_restore.c
>> index b411126..cec2dfc 100644
>> --- a/tools/libxc/xc_domain_restore.c
>> +++ b/tools/libxc/xc_domain_restore.c
>> @@ -1490,6 +1490,14 @@ int xc_domain_restore(xc_interface *xch, int io_fd, uint32_t dom,
>> struct restore_ctx *ctx = &_ctx;
>> struct domain_info_context *dinfo = &ctx->dinfo;
>>
>> + if ( getenv("XG_MIGRATION_V2") )
>> + {
>> + return xc_domain_restore2(
>> + xch, io_fd, dom, store_evtchn, store_mfn,
>> + store_domid, console_evtchn, console_mfn, console_domid,
>> + hvm, pae, superpages, checkpointed_stream, callbacks);
>> + }
>> +
>> DPRINTF("%s: starting restore of new domid %u", __func__, dom);
>>
>> pagebuf_init(&pagebuf);
>> diff --git a/tools/libxc/xc_domain_save.c b/tools/libxc/xc_domain_save.c
>> index 02544f8..a23ed68 100644
>> --- a/tools/libxc/xc_domain_save.c
>> +++ b/tools/libxc/xc_domain_save.c
>> @@ -894,6 +894,12 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter
>>
>> int completed = 0;
>>
>> + if ( getenv("XG_MIGRATION_V2") )
>> + {
>> + return xc_domain_save2(xch, io_fd, dom, max_iters,
>> + max_factor, flags, callbacks, hvm);
>> + }
>> +
>> DPRINTF("%s: starting save of domid %u", __func__, dom);
>>
>> if ( hvm && !callbacks->switch_qemu_logdirty )
>> diff --git a/tools/libxc/xenguest.h b/tools/libxc/xenguest.h
>> index 40bbac8..55755cf 100644
>> --- a/tools/libxc/xenguest.h
>> +++ b/tools/libxc/xenguest.h
>> @@ -88,6 +88,10 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter
>> uint32_t max_factor, uint32_t flags /* XCFLAGS_xxx */,
>> struct save_callbacks* callbacks, int hvm);
>>
>> +/* Domain Save v2 */
>> +int xc_domain_save2(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iters,
>> + uint32_t max_factor, uint32_t flags,
>> + struct save_callbacks* callbacks, int hvm);
>>
>> /* callbacks provided by xc_domain_restore */
>> struct restore_callbacks {
>> @@ -124,6 +128,15 @@ int xc_domain_restore(xc_interface *xch, int io_fd, uint32_t dom,
>> unsigned int hvm, unsigned int pae, int superpages,
>> int checkpointed_stream,
>> struct restore_callbacks *callbacks);
>> +
>> +/* Domain Restore v2 */
>> +int xc_domain_restore2(xc_interface *xch, int io_fd, uint32_t dom,
>> + unsigned int store_evtchn, unsigned long *store_mfn,
>> + domid_t store_domid, unsigned int console_evtchn,
>> + unsigned long *console_mfn, domid_t console_domid,
>> + unsigned int hvm, unsigned int pae, int superpages,
>> + int checkpointed_stream,
>> + struct restore_callbacks *callbacks);
>> /**
>> * xc_domain_restore writes a file to disk that contains the device
>> * model saved state.
>
next prev parent reply other threads:[~2014-09-11 10:37 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-10 17:10 [PATCH v7 0/29] Migration Stream v2 Andrew Cooper
2014-09-10 17:10 ` [PATCH 01/29] tools/libxl: Fix stray blank line from debug logging Andrew Cooper
2014-09-11 10:18 ` Ian Campbell
2014-09-10 17:10 ` [PATCH 02/29] tools/[lib]xl: Correct use of init/dispose for libxl_domain_restore_params Andrew Cooper
2014-09-11 10:19 ` Ian Campbell
2014-09-10 17:10 ` [PATCH 03/29] tools/libxc: Implement writev_exact() in the same style as write_exact() Andrew Cooper
2014-09-11 10:19 ` Ian Campbell
2014-09-11 10:57 ` Ian Campbell
2014-09-11 10:59 ` Andrew Cooper
2014-09-10 17:10 ` [PATCH 04/29] libxc/bitops: Add or() to the available bitmap operations Andrew Cooper
2014-09-11 10:21 ` Ian Campbell
2014-09-10 17:10 ` [PATCH 05/29] libxc/progress: Repurpose the current progress reporting infrastructure Andrew Cooper
2014-09-11 10:32 ` Ian Campbell
2014-09-11 14:03 ` Andrew Cooper
2014-09-11 14:06 ` Ian Campbell
2014-09-10 17:10 ` [PATCH 06/29] docs: libxc migration stream specification Andrew Cooper
2014-09-10 17:10 ` [PATCH 07/29] docs: libxl " Andrew Cooper
2014-09-11 10:45 ` Ian Campbell
2014-09-11 10:56 ` Andrew Cooper
2014-09-11 11:03 ` Ian Campbell
2014-09-11 11:10 ` Andrew Cooper
2014-09-10 17:10 ` [PATCH 08/29] tools/python: Infrastructure relating to migration v2 streams Andrew Cooper
2014-09-10 17:10 ` [PATCH 09/29] [HACK] tools/libxc: save/restore v2 framework Andrew Cooper
2014-09-11 10:34 ` Ian Campbell
2014-09-11 10:37 ` Andrew Cooper [this message]
2014-09-11 11:01 ` Ian Campbell
2014-09-11 11:04 ` Andrew Cooper
2014-09-11 11:10 ` Ian Campbell
2014-09-14 10:23 ` Shriram Rajagopalan
2014-09-15 15:09 ` Andrew Cooper
2014-09-15 18:58 ` Konrad Rzeszutek Wilk
2014-09-16 11:44 ` Andrew Cooper
2014-09-16 19:54 ` Konrad Rzeszutek Wilk
2014-09-10 17:10 ` [PATCH 10/29] tools/libxc: C implementation of stream format Andrew Cooper
2014-09-11 10:48 ` Ian Campbell
2014-09-10 17:10 ` [PATCH 11/29] tools/libxc: noarch common code Andrew Cooper
2014-09-11 10:52 ` Ian Campbell
2014-09-10 17:10 ` [PATCH 12/29] tools/libxc: x86 " Andrew Cooper
2014-09-10 17:10 ` [PATCH 13/29] tools/libxc: x86 PV " Andrew Cooper
2014-09-10 17:10 ` [PATCH 14/29] tools/libxc: x86 PV save code Andrew Cooper
2014-09-10 17:10 ` [PATCH 15/29] tools/libxc: x86 PV restore code Andrew Cooper
2014-09-10 17:10 ` [PATCH 16/29] tools/libxc: x86 HVM save code Andrew Cooper
2014-09-10 17:10 ` [PATCH 17/29] tools/libxc: x86 HVM restore code Andrew Cooper
2014-09-10 17:10 ` [PATCH 18/29] tools/libxc: noarch save code Andrew Cooper
2014-09-10 17:10 ` [PATCH 19/29] tools/libxc: noarch restore code Andrew Cooper
2014-09-10 17:10 ` [PATCH 20/29] tools/libxl: Update datacopier to support sending data only Andrew Cooper
2014-09-11 11:56 ` Ian Campbell
2014-09-11 12:00 ` Andrew Cooper
2014-09-11 12:39 ` Ian Campbell
2014-09-11 13:03 ` Andrew Cooper
2014-09-11 13:04 ` Ian Campbell
2014-09-10 17:10 ` [PATCH 21/29] tools/libxl: Allow adding larger amounts of prefixdata to datacopier Andrew Cooper
2014-09-11 12:01 ` Ian Campbell
2014-09-11 12:17 ` Ross Lagerwall
2014-09-11 12:39 ` Ian Campbell
2014-09-10 17:11 ` [PATCH 22/29] tools/libxl: Allow limiting amount copied by datacopier Andrew Cooper
2014-09-11 12:02 ` Ian Campbell
2014-09-11 12:23 ` Ross Lagerwall
2014-09-11 12:40 ` Ian Campbell
2014-09-12 8:36 ` Wen Congyang
2014-09-19 7:45 ` Ross Lagerwall
2014-09-10 17:11 ` [PATCH 23/29] tools/libxl: Extend datacopier to support reading into a buffer Andrew Cooper
2014-09-11 12:03 ` Ian Campbell
2014-09-11 12:26 ` Ross Lagerwall
2014-09-11 12:41 ` Ian Campbell
2014-09-12 8:49 ` Wen Congyang
2014-09-19 7:48 ` Ross Lagerwall
2014-09-10 17:11 ` [PATCH 24/29] tools/libxl: Allow suppression of POLLHUP for datacopiers Andrew Cooper
2014-09-11 12:05 ` Ian Campbell
2014-09-10 17:11 ` [PATCH 25/29] tools/libxl: Stream v2 format Andrew Cooper
2014-09-11 12:06 ` Ian Campbell
2014-09-10 17:11 ` [PATCH 26/29] tools/libxl: Implement libxl__domain_restore() for v2 streams Andrew Cooper
2014-09-11 12:35 ` Ian Campbell
2014-09-11 13:01 ` Andrew Cooper
2014-09-10 17:11 ` [PATCH 27/29] [VERY RFC] tools/libxl: Support restoring legacy streams Andrew Cooper
2014-09-11 12:36 ` Ian Campbell
2014-09-10 17:11 ` [PATCH 28/29] tools/xl: Restore v2 streams using new interface Andrew Cooper
2014-09-10 17:11 ` [PATCH 29/29] tools/[lib]xl: Alter libxl_domain_suspend() to write a v2 stream Andrew Cooper
2014-09-11 11:50 ` [PATCH v7 0/29] Migration Stream v2 Ian Campbell
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=54117B6F.6010200@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=Ian.Campbell@citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=xen-devel@lists.xen.org \
/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.