mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
tools/migrate: Fix regression when migrating from older version of Xen
Commit00a4b65f85Sep 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) master commit:7051d5c872master date: Thu, 10 Oct 2013 11:28:21 +0000 Backport to Xen-4.3: As remus was not a supported feature in libxl in 4.3 and earlier, this backport hardcodes a non-checkpointed stream from libxl, removing the need to any playing around with the IDL and API. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> CC: Ian Jackson <Ian.Jackson@eu.citrix.com>
This commit is contained in:
1 parent
a002c8491b
commit
be2f2316f1
6 files changed
+16
-10
No files matched your search
@@ -301,7 +301,7 @@ def restore(xd, fd, dominfo = None, paused = False, relocating = False):
|
||||
|
||||
cmd = map(str, [xen.util.auxbin.pathTo(XC_RESTORE),
|
||||
fd, dominfo.getDomid(),
|
||||
store_port, console_port, int(is_hvm), pae, apic, superpages])
|
||||
store_port, console_port, int(is_hvm), pae, apic, superpages, 1])
|
||||
log.debug("[xc_restore]: %s", string.join(cmd))
|
||||
|
||||
handler = RestoreInputHandler()
|
||||
|
||||