aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxc/xc_domain_restore.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/libxc/xc_domain_restore.c')
-rw-r--r--tools/libxc/xc_domain_restore.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/tools/libxc/xc_domain_restore.c b/tools/libxc/xc_domain_restore.c
index c9f3916b34..7c64a4929b 100644
--- a/tools/libxc/xc_domain_restore.c
+++ b/tools/libxc/xc_domain_restore.c
@@ -494,13 +494,18 @@ static int buffer_tail_hvm(xc_interface *xch, struct restore_ctx *ctx,
return -1;
}
- /* The normal live-migration QEMU record has no length information.
+ /* The legacy live-migration QEMU record has no length information.
* Short of reimplementing the QEMU parser, we're forced to just read
- * until EOF. Remus gets around this by sending a different signature
- * which includes a length prefix */
+ * until EOF.
+ *
+ * Gets around this by sending a different signatures for the new
+ * live-migration QEMU record and Remus which includes a length
+ * prefix
+ */
if ( !memcmp(qemusig, "QemuDeviceModelRecord", sizeof(qemusig)) )
return compat_buffer_qemu(xch, ctx, fd, buf);
- else if ( !memcmp(qemusig, "RemusDeviceModelState", sizeof(qemusig)) )
+ else if ( !memcmp(qemusig, "DeviceModelRecord0002", sizeof(qemusig)) ||
+ !memcmp(qemusig, "RemusDeviceModelState", sizeof(qemusig)) )
return buffer_qemu(xch, ctx, fd, buf);
qemusig[20] = '\0';