static int
qemuMigrationSrcRun(virQEMUDriver *driver,
virDomainObj *vm,
+ const char *xmlin,
const char *persist_xml,
const char *cookiein,
int cookieinlen,
persist_xml,
NULL, NULL)))
goto error;
+ } else if (xmlin) {
+ /* if input XML is provided, use that one as template for the
+ * persistent XML. Otherwise user's changes will be thrown away.
+ */
+ if (!(persistDef = qemuMigrationAnyPrepareDef(driver,
+ priv->qemuCaps,
+ xmlin,
+ NULL, NULL)))
+ goto error;
} else {
virDomainDef *def = vm->newDef ? vm->newDef : vm->def;
if (!(persistDef = qemuDomainDefCopy(driver, priv->qemuCaps, def,
static int
qemuMigrationSrcPerformNative(virQEMUDriver *driver,
virDomainObj *vm,
+ const char *xmlin,
const char *persist_xml,
const char *uri,
const char *cookiein,
ret = qemuMigrationSrcResume(vm, migParams, cookiein, cookieinlen,
cookieout, cookieoutlen, &spec, flags);
} else {
- ret = qemuMigrationSrcRun(driver, vm, persist_xml, cookiein, cookieinlen,
+ ret = qemuMigrationSrcRun(driver, vm, xmlin, persist_xml, cookiein, cookieinlen,
cookieout, cookieoutlen, flags, resource,
&spec, dconn, graphicsuri,
nmigrate_disks, migrate_disks,
qemuMigrationSrcPerformTunnel(virQEMUDriver *driver,
virDomainObj *vm,
virStreamPtr st,
+ const char *xmlin,
const char *persist_xml,
const char *cookiein,
int cookieinlen,
goto cleanup;
}
- ret = qemuMigrationSrcRun(driver, vm, persist_xml, cookiein, cookieinlen,
+ ret = qemuMigrationSrcRun(driver, vm, xmlin, persist_xml, cookiein, cookieinlen,
cookieout, cookieoutlen, flags, resource, &spec,
dconn, graphicsuri, nmigrate_disks, migrate_disks,
migParams, NULL);
virCloseCallbacksDomainRemove(vm, NULL, qemuMigrationAnyConnectionClosed);
qemuDomainCleanupRemove(vm, qemuProcessCleanupMigrationJob);
- ret = qemuMigrationSrcPerformNative(driver, vm, NULL, uri,
+ ret = qemuMigrationSrcPerformNative(driver, vm, NULL, NULL, uri,
cookiein, cookieinlen,
cookieout, cookieoutlen, flags,
0, NULL, NULL, 0, NULL, migParams, NULL);
VIR_DEBUG("Perform %p", sconn);
ignore_value(qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_PERFORM2));
if (flags & VIR_MIGRATE_TUNNELLED)
- ret = qemuMigrationSrcPerformTunnel(driver, vm, st, NULL,
+ ret = qemuMigrationSrcPerformTunnel(driver, vm, st, NULL, NULL,
NULL, 0, NULL, NULL,
flags, resource, dconn,
NULL, 0, NULL, migParams);
else
- ret = qemuMigrationSrcPerformNative(driver, vm, NULL, uri_out,
+ ret = qemuMigrationSrcPerformNative(driver, vm, NULL, NULL, uri_out,
cookie, cookielen,
NULL, NULL, /* No out cookie with v2 migration */
flags, resource, dconn, NULL, 0, NULL,
} else {
ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM3));
if (flags & VIR_MIGRATE_TUNNELLED) {
- ret = qemuMigrationSrcPerformTunnel(driver, vm, st, persist_xml,
+ ret = qemuMigrationSrcPerformTunnel(driver, vm, st, xmlin, persist_xml,
cookiein, cookieinlen,
&cookieout, &cookieoutlen,
flags, bandwidth, dconn, graphicsuri,
nmigrate_disks, migrate_disks,
migParams);
} else {
- ret = qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri,
+ ret = qemuMigrationSrcPerformNative(driver, vm, xmlin, persist_xml, uri,
cookiein, cookieinlen,
&cookieout, &cookieoutlen,
flags, bandwidth, dconn, graphicsuri,
if (qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_PERFORM2) < 0)
goto endjob;
- ret = qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri, cookiein, cookieinlen,
+ ret = qemuMigrationSrcPerformNative(driver, vm, xmlin, persist_xml, uri, cookiein, cookieinlen,
cookieout, cookieoutlen,
flags, resource, NULL, NULL, 0, NULL,
migParams, nbdURI);
qemuMigrationSrcPerformPhase(virQEMUDriver *driver,
virConnectPtr conn,
virDomainObj *vm,
+ const char *xmlin,
const char *persist_xml,
const char *uri,
const char *graphicsuri,
virCloseCallbacksDomainRemove(vm, NULL, qemuMigrationAnyConnectionClosed);
- if (qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri, cookiein, cookieinlen,
+ if (qemuMigrationSrcPerformNative(driver, vm, xmlin, persist_xml, uri, cookiein, cookieinlen,
cookieout, cookieoutlen,
flags, resource, NULL, graphicsuri,
nmigrate_disks, migrate_disks, migParams, nbdURI) < 0)
}
if (v3proto) {
- return qemuMigrationSrcPerformPhase(driver, conn, vm, persist_xml, uri,
+ return qemuMigrationSrcPerformPhase(driver, conn, vm, xmlin, persist_xml, uri,
graphicsuri,
nmigrate_disks, migrate_disks,
migParams,