From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yang Hongyang Subject: Re: [PATCH v3 3/6] libxc/migration: Specification update for CHECKPOINT records Date: Tue, 12 May 2015 17:44:02 +0800 Message-ID: <5551CB62.2090106@cn.fujitsu.com> References: <1431423351-27424-1-git-send-email-andrew.cooper3@citrix.com> <1431423351-27424-4-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1431423351-27424-4-git-send-email-andrew.cooper3@citrix.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: Andrew Cooper , Xen-devel Cc: Wei Liu , Ian Jackson , David Vrabel , Ian Campbell List-Id: xen-devel@lists.xenproject.org On 05/12/2015 05:35 PM, Andrew Cooper wrote: > Checkpointed streams need to signal the end of a consistent view of VM state, > and the start of the libxl data. Ah, now I know what's CHECKPOINT record mean, the name is OK for me then. > > Signed-off-by: Andrew Cooper > CC: David Vrabel > CC: Ian Campbell > CC: Ian Jackson > CC: Wei Liu > CC: Yang Hongyang > > --- > > After discusions with David, we have come to the conclusion that a CHECKPOINT > record alone is sufficient for the remus case. There is no functional need to > explicitly identify the stream as being of arbitrary length. > --- > docs/specs/libxc-migration-stream.pandoc | 23 ++++++++++++++++++++--- > tools/libxc/xc_sr_common.c | 1 + > tools/libxc/xc_sr_stream_format.h | 1 + > 3 files changed, 22 insertions(+), 3 deletions(-) > > diff --git a/docs/specs/libxc-migration-stream.pandoc b/docs/specs/libxc-migration-stream.pandoc > index 520240f..97edd7d 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,23 @@ The verify record contains no fields; its body_length is 0. > > \clearpage > > +CHECKPOINT > +---------- > + > +A checkpoint record indicates that the records thusfar 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. > + > +\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 @@ const char *dhdr_type_to_str(uint32_t type) > [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 > > -- Thanks, Yang.