diff options
author | Andrew Cooper <andrew.cooper3@citrix.com> | 2013-10-10 12:23:10 +0100 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2013-10-10 12:28:21 +0100 |
commit | 7051d5c872e3e708b2d4b2088215d6ab1b33de1b (patch) | |
tree | 78359bc2523ab1b4e5e506dba98aa81ee09657e0 /tools/libxc/xenguest.h | |
parent | a825dd6515aa8eab804789ad8bba39df9ca9be08 (diff) | |
download | xen-7051d5c872e3e708b2d4b2088215d6ab1b33de1b.tar.gz xen-7051d5c872e3e708b2d4b2088215d6ab1b33de1b.tar.bz2 xen-7051d5c872e3e708b2d4b2088215d6ab1b33de1b.zip |
tools/migrate: Fix regression when migrating from older version of Xen
Commit 00a4b65f8534c9e6521eab2e6ce796ae36037774 Sep 7 2010
"libxc: provide notification of final checkpoint to restore end"
broke migration from any version of Xen using tools from prior to that commit
Older tools have no idea about an XC_SAVE_ID_LAST_CHECKPOINT, causing newer
tools xc_domain_restore() to start reading the qemu save record, as
ctx->last_checkpoint is 0.
The failure looks like:
xc: error: Max batch size exceeded (1970103633). Giving up.
where 1970103633 = 0x756d6551 = *(uint32_t*)"Qemu"
With this fix in place, the behaviour for normal migrations is reverted to how
it was before the regression; the migration is considered non-checkpointed
right from the start. A XC_SAVE_ID_LAST_CHECKPOINT chunk seen in the
migration stream is a nop. For checkpointed migrations the behaviour is
unchanged.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Ian Campbell <Ian.Campbell@citrix.com>
CC: Ian Jackson <Ian.Jackson@eu.citrix.com>
Acked-by: Shriram Rajagopalan <rshriram@cs.ubc.ca> (Remus bits)
Diffstat (limited to 'tools/libxc/xenguest.h')
-rw-r--r-- | tools/libxc/xenguest.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/tools/libxc/xenguest.h b/tools/libxc/xenguest.h index c12091f52b..a0e30e1c98 100644 --- a/tools/libxc/xenguest.h +++ b/tools/libxc/xenguest.h @@ -114,6 +114,7 @@ struct restore_callbacks { * @parm pae non-zero if this HVM domain has PAE support enabled * @parm superpages non-zero to allocate guest memory with superpages * @parm no_incr_generationid non-zero if generation id is NOT to be incremented + * @parm checkpointed_stream non-zero if the far end of the stream is using checkpointing * @parm vm_generationid_addr returned with the address of the generation id buffer * @parm callbacks non-NULL to receive a callback to restore toolstack * specific data @@ -124,7 +125,7 @@ int xc_domain_restore(xc_interface *xch, int io_fd, uint32_t dom, 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 no_incr_generationid, + int no_incr_generationid, int checkpointed_stream, unsigned long *vm_generationid_addr, struct restore_callbacks *callbacks); /** |