[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 22/27] docs/libxl: [RFC] Introduce CHECKPOINT_END to support migration v2 remus streams
On Mon, 2015-06-15 at 14:44 +0100, Andrew Cooper wrote: > In a remus senario, libxc will write a CHECKPOINT record, then hand ownership "scenario" > of the fd to libxl. Libxl then writes any records required and finishes with > a CHECKPOINT_END record, then hands ownership of the fd back to libxc. Seems like a plausible scheme to me, if that's what the RFC was for. > Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx> > CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> > CC: Wei Liu <wei.liu2@xxxxxxxxxx> > --- > docs/specs/libxl-migration-stream.pandoc | 15 ++++++++++++++- > tools/libxl/libxl_sr_stream_format.h | 1 + > tools/python/xen/migration/libxl.py | 11 +++++++++++ > 3 files changed, 26 insertions(+), 1 deletion(-) > > diff --git a/docs/specs/libxl-migration-stream.pandoc > b/docs/specs/libxl-migration-stream.pandoc > index 7235317..d41932a 100644 > --- a/docs/specs/libxl-migration-stream.pandoc > +++ b/docs/specs/libxl-migration-stream.pandoc > @@ -119,7 +119,9 @@ type 0x00000000: END > > 0x00000003: EMULATOR_CONTEXT > > - 0x00000004 - 0x7FFFFFFF: Reserved for future _mandatory_ > + 0x00000004: CHECKPOINT_END > + > + 0x00000005 - 0x7FFFFFFF: Reserved for future _mandatory_ > records. > > 0x80000000 - 0xFFFFFFFF: Reserved for future _optional_ > @@ -203,3 +205,14 @@ index Index of this emulator for the domain, > if multiple > > emulator_ctx Emulator context blob. > -------------------------------------------------------------------- > + > +CHECKPOINT_END > +-------------- > + > +A checkpoint end record marks the end of a checkpoint in the image. > + > + 0 1 2 3 4 5 6 7 octet > + +-------------------------------------------------+ > + > +The end record contains no fields; its body_length is 0. > + > diff --git a/tools/libxl/libxl_sr_stream_format.h > b/tools/libxl/libxl_sr_stream_format.h > index 487f9e2..5dfa55f 100644 > --- a/tools/libxl/libxl_sr_stream_format.h > +++ b/tools/libxl/libxl_sr_stream_format.h > @@ -35,6 +35,7 @@ > #define REC_TYPE_LIBXC_CONTEXT 0x00000001U > #define REC_TYPE_XENSTORE_DATA 0x00000002U > #define REC_TYPE_EMULATOR_CONTEXT 0x00000003U > +#define REC_TYPE_CHECKPOINT_END 0x00000004U > > typedef struct libxl_sr_emulator_hdr > { > diff --git a/tools/python/xen/migration/libxl.py > b/tools/python/xen/migration/libxl.py > index 4e1f4f8..415502e 100644 > --- a/tools/python/xen/migration/libxl.py > +++ b/tools/python/xen/migration/libxl.py > @@ -36,12 +36,14 @@ REC_TYPE_end = 0x00000000 > REC_TYPE_libxc_context = 0x00000001 > REC_TYPE_xenstore_data = 0x00000002 > REC_TYPE_emulator_context = 0x00000003 > +REC_TYPE_checkpoint_end = 0x00000004 > > rec_type_to_str = { > REC_TYPE_end : "End", > REC_TYPE_libxc_context : "Libxc context", > REC_TYPE_xenstore_data : "Xenstore data", > REC_TYPE_emulator_context : "Emulator context", > + REC_TYPE_checkpoint_end : "Checkpoint end", > } > > # emulator_context > @@ -176,6 +178,13 @@ class VerifyLibxl(VerifyBase): > self.info(" Index %d, type %s" % (emu_idx, > emulator_id_to_str[emu_id])) > > > + def verify_record_checkpoint_end(self, content): > + """ Checkpoint end record """ > + > + if len(content) != 0: > + raise RecordError("Checkpoint end record with non-zero length") > + > + > record_verifiers = { > REC_TYPE_end: > VerifyLibxl.verify_record_end, > @@ -185,4 +194,6 @@ record_verifiers = { > VerifyLibxl.verify_record_xenstore_data, > REC_TYPE_emulator_context: > VerifyLibxl.verify_record_emulator_context, > + REC_TYPE_checkpoint_end: > + VerifyLibxl.verify_record_checkpoint_end, > } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |