From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH v4 03/14] libxc/migration: Specification update for CHECKPOINT records Date: Tue, 12 May 2015 13:05:24 +0100 Message-ID: <5551EC84.9090504@citrix.com> References: <1431429922-15344-1-git-send-email-yanghy@cn.fujitsu.com> <1431429922-15344-4-git-send-email-yanghy@cn.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1431429922-15344-4-git-send-email-yanghy@cn.fujitsu.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: Yang Hongyang , xen-devel@lists.xen.org Cc: wei.liu2@citrix.com, ian.campbell@citrix.com, wency@cn.fujitsu.com, ian.jackson@eu.citrix.com, yunhong.jiang@intel.com, eddie.dong@intel.com, rshriram@cs.ubc.ca List-Id: xen-devel@lists.xenproject.org On 12/05/15 12:25, Yang Hongyang wrote: > From: Andrew Cooper > > Checkpointed streams need to signal the end of a consistent view of VM state, > and the start of the libxl data. > > Signed-off-by: Andrew Cooper > Signed-off-by: David Vrabel > Signed-off-by: Yang Hongyang > CC: Ian Campbell > CC: Ian Jackson > CC: Wei Liu > --- > docs/specs/libxc-migration-stream.pandoc | 33 +++++++++++++++++++++++++++++--- > tools/libxc/xc_sr_common.c | 1 + > tools/libxc/xc_sr_stream_format.h | 1 + > 3 files changed, 32 insertions(+), 3 deletions(-) > > diff --git a/docs/specs/libxc-migration-stream.pandoc b/docs/specs/libxc-migration-stream.pandoc > index 520240f..842938c 100644 > --- a/docs/specs/libxc-migration-stream.pandoc > +++ b/docs/specs/libxc-migration-stream.pandoc > @@ -37,8 +37,6 @@ Not Yet Included > The following features are not yet fully specified and will be > included in a future draft. > > -* Remus > - > * Page data compression. > > * ARM > @@ -227,7 +225,9 @@ type 0x00000000: END > > 0x0000000D: VERIFY > > - 0x0000000E - 0x7FFFFFFF: Reserved for future _mandatory_ > + 0x0000000E: CHECKPOINT > + > + 0x0000000F - 0x7FFFFFFF: Reserved for future _mandatory_ > records. > > 0x80000000 - 0xFFFFFFFF: Reserved for future _optional_ > @@ -578,6 +578,33 @@ The verify record contains no fields; its body_length is 0. > > \clearpage > > +CHECKPOINT > +---------- > + > +A checkpoint record indicates that all the preceding records in the stream > +represent a consistent view of VM state. > + > + 0 1 2 3 4 5 6 7 octet > + +-------------------------------------------------+ > + > +The checkpoint record contains no fields; its body_length is 0 > + > +A stream containing checkpoint records must have indicated itself as a > +checkpointed stream in the Image Header. Conversely, a stream not > +identified as checkpointed must not contain checkpoint records. The above paragraph needs deleting. It was my mistake for not deleting it in my series. ~Andrew > + > +If the stream is embedded in a higher level toolstack stream, the > +CHECKPOINT record marks the end of the libxc portion of the stream > +and the stream is handed back to the higher level for further > +processing. > + > +The higher level stream may then hand the stream back to libxc to > +process another set of records for the next consistent VM state > +snapshot. This next set of records may be terminated by another > +CHECKPOINT record or an END record. > + > +\clearpage > + > Layout > ====== > > diff --git a/tools/libxc/xc_sr_common.c b/tools/libxc/xc_sr_common.c > index 59e0c5d..945cfa6 100644 > --- a/tools/libxc/xc_sr_common.c > +++ b/tools/libxc/xc_sr_common.c > @@ -34,6 +34,7 @@ static const char *mandatory_rec_types[] = > [REC_TYPE_TOOLSTACK] = "Toolstack", > [REC_TYPE_X86_PV_VCPU_MSRS] = "x86 PV vcpu msrs", > [REC_TYPE_VERIFY] = "Verify", > + [REC_TYPE_CHECKPOINT] = "Checkpoint", > }; > > const char *rec_type_to_str(uint32_t type) > diff --git a/tools/libxc/xc_sr_stream_format.h b/tools/libxc/xc_sr_stream_format.h > index d116ca6..6d0f8fd 100644 > --- a/tools/libxc/xc_sr_stream_format.h > +++ b/tools/libxc/xc_sr_stream_format.h > @@ -74,6 +74,7 @@ struct xc_sr_rhdr > #define REC_TYPE_TOOLSTACK 0x0000000bU > #define REC_TYPE_X86_PV_VCPU_MSRS 0x0000000cU > #define REC_TYPE_VERIFY 0x0000000dU > +#define REC_TYPE_CHECKPOINT 0x0000000eU > > #define REC_TYPE_OPTIONAL 0x80000000U >