mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
Revert "qemu: migration: Improve handling of VIR_MIGRATE_PARAM_DEST_XML with VIR_MIGRATE_PERSIST_DEST"
The original intention was to improve the behaviour of the
VIR_MIGRATE_PERSIST_DEST flag which makes the VM persistent after
migration on the destination when used with VIR_MIGRATE_PARAM_DEST_XML.
While it worked as intended with p2p migration where the migration is
driven from the virtqemud instance on the source of the migration, which
can distinguish between the user-provided input XML and the one fetched
from the source of the migration, it's not easily possible to achieve
the same behaviour with normal migration driven from the client library.
The approach also still had corner cases (originally deemed worth
changing) such as if the persistent definition was modified it would be
overwritten.
As there is no clear fix which would improve both styles of migrations
with no corner cases revert the change.
Upcoming commits will modify the documentation to add warning about the
use of VIR_MIGRATE_PERSIST_DEST with VIR_MIGRATE_PARAM_DEST_XML/xmlin
without using VIR_MIGRATE_PARAM_PERSIST_XML instead of a code fix.
This reverts commit 6a38559092
.
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
6d9bf5b63c
commit
6f237f4642
@ -4829,7 +4829,6 @@ qemuMigrationSrcCancel(virDomainObj *vm,
|
||||
static int
|
||||
qemuMigrationSrcRun(virQEMUDriver *driver,
|
||||
virDomainObj *vm,
|
||||
const char *xmlin,
|
||||
const char *persist_xml,
|
||||
const char *cookiein,
|
||||
int cookieinlen,
|
||||
@ -4902,15 +4901,6 @@ qemuMigrationSrcRun(virQEMUDriver *driver,
|
||||
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,
|
||||
@ -5267,7 +5257,6 @@ qemuMigrationSrcResume(virDomainObj *vm,
|
||||
static int
|
||||
qemuMigrationSrcPerformNative(virQEMUDriver *driver,
|
||||
virDomainObj *vm,
|
||||
const char *xmlin,
|
||||
const char *persist_xml,
|
||||
const char *uri,
|
||||
const char *cookiein,
|
||||
@ -5356,7 +5345,7 @@ qemuMigrationSrcPerformNative(virQEMUDriver *driver,
|
||||
ret = qemuMigrationSrcResume(vm, migParams, cookiein, cookieinlen,
|
||||
cookieout, cookieoutlen, &spec, dconn, flags);
|
||||
} else {
|
||||
ret = qemuMigrationSrcRun(driver, vm, xmlin, persist_xml, cookiein, cookieinlen,
|
||||
ret = qemuMigrationSrcRun(driver, vm, persist_xml, cookiein, cookieinlen,
|
||||
cookieout, cookieoutlen, flags, resource,
|
||||
&spec, dconn, graphicsuri,
|
||||
migrate_disks, migrate_disks_detect_zeroes,
|
||||
@ -5374,7 +5363,6 @@ static int
|
||||
qemuMigrationSrcPerformTunnel(virQEMUDriver *driver,
|
||||
virDomainObj *vm,
|
||||
virStreamPtr st,
|
||||
const char *xmlin,
|
||||
const char *persist_xml,
|
||||
const char *cookiein,
|
||||
int cookieinlen,
|
||||
@ -5422,7 +5410,7 @@ qemuMigrationSrcPerformTunnel(virQEMUDriver *driver,
|
||||
|
||||
/* Migration with NBD is not supported with _TUNNELLED, thus
|
||||
* 'migrate_disks_detect_zeroes' is NULL here */
|
||||
ret = qemuMigrationSrcRun(driver, vm, xmlin, persist_xml, cookiein, cookieinlen,
|
||||
ret = qemuMigrationSrcRun(driver, vm, persist_xml, cookiein, cookieinlen,
|
||||
cookieout, cookieoutlen, flags, resource, &spec,
|
||||
dconn, graphicsuri, migrate_disks, NULL,
|
||||
migParams, NULL);
|
||||
@ -5461,7 +5449,7 @@ qemuMigrationSrcPerformResume(virQEMUDriver *driver,
|
||||
virCloseCallbacksDomainRemove(vm, NULL, qemuMigrationAnyConnectionClosed);
|
||||
qemuDomainCleanupRemove(vm, qemuProcessCleanupMigrationJob);
|
||||
|
||||
ret = qemuMigrationSrcPerformNative(driver, vm, NULL, NULL, uri,
|
||||
ret = qemuMigrationSrcPerformNative(driver, vm, NULL, uri,
|
||||
cookiein, cookieinlen,
|
||||
cookieout, cookieoutlen, flags,
|
||||
0, NULL, NULL, NULL, NULL, migParams, NULL);
|
||||
@ -5563,12 +5551,12 @@ qemuMigrationSrcPerformPeer2Peer2(virQEMUDriver *driver,
|
||||
VIR_DEBUG("Perform %p", sconn);
|
||||
ignore_value(qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_PERFORM2));
|
||||
if (flags & VIR_MIGRATE_TUNNELLED)
|
||||
ret = qemuMigrationSrcPerformTunnel(driver, vm, st, NULL, NULL,
|
||||
ret = qemuMigrationSrcPerformTunnel(driver, vm, st, NULL,
|
||||
NULL, 0, NULL, NULL,
|
||||
flags, resource, dconn,
|
||||
NULL, NULL, migParams);
|
||||
else
|
||||
ret = qemuMigrationSrcPerformNative(driver, vm, NULL, NULL, uri_out,
|
||||
ret = qemuMigrationSrcPerformNative(driver, vm, NULL, uri_out,
|
||||
cookie, cookielen,
|
||||
NULL, NULL, /* No out cookie with v2 migration */
|
||||
flags, resource, dconn, NULL, NULL,
|
||||
@ -5838,14 +5826,14 @@ qemuMigrationSrcPerformPeer2Peer3(virQEMUDriver *driver,
|
||||
} else {
|
||||
ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM3));
|
||||
if (flags & VIR_MIGRATE_TUNNELLED) {
|
||||
ret = qemuMigrationSrcPerformTunnel(driver, vm, st, xmlin, persist_xml,
|
||||
ret = qemuMigrationSrcPerformTunnel(driver, vm, st, persist_xml,
|
||||
cookiein, cookieinlen,
|
||||
&cookieout, &cookieoutlen,
|
||||
flags, bandwidth, dconn, graphicsuri,
|
||||
migrate_disks,
|
||||
migParams);
|
||||
} else {
|
||||
ret = qemuMigrationSrcPerformNative(driver, vm, xmlin, persist_xml, uri,
|
||||
ret = qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri,
|
||||
cookiein, cookieinlen,
|
||||
&cookieout, &cookieoutlen,
|
||||
flags, bandwidth, dconn, graphicsuri,
|
||||
@ -6243,7 +6231,7 @@ qemuMigrationSrcPerformJob(virQEMUDriver *driver,
|
||||
if (qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_PERFORM2) < 0)
|
||||
goto endjob;
|
||||
|
||||
ret = qemuMigrationSrcPerformNative(driver, vm, xmlin, persist_xml, uri, cookiein, cookieinlen,
|
||||
ret = qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri, cookiein, cookieinlen,
|
||||
cookieout, cookieoutlen,
|
||||
flags, resource, NULL, NULL, NULL, NULL,
|
||||
migParams, nbdURI);
|
||||
@ -6308,7 +6296,6 @@ static int
|
||||
qemuMigrationSrcPerformPhase(virQEMUDriver *driver,
|
||||
virConnectPtr conn,
|
||||
virDomainObj *vm,
|
||||
const char *xmlin,
|
||||
const char *persist_xml,
|
||||
const char *uri,
|
||||
const char *graphicsuri,
|
||||
@ -6346,7 +6333,7 @@ qemuMigrationSrcPerformPhase(virQEMUDriver *driver,
|
||||
|
||||
virCloseCallbacksDomainRemove(vm, NULL, qemuMigrationAnyConnectionClosed);
|
||||
|
||||
if (qemuMigrationSrcPerformNative(driver, vm, xmlin, persist_xml, uri, cookiein, cookieinlen,
|
||||
if (qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri, cookiein, cookieinlen,
|
||||
cookieout, cookieoutlen,
|
||||
flags, resource, NULL, graphicsuri,
|
||||
migrate_disks, migrate_disks_detect_zeroes,
|
||||
@ -6450,7 +6437,7 @@ qemuMigrationSrcPerform(virQEMUDriver *driver,
|
||||
}
|
||||
|
||||
if (v3proto) {
|
||||
return qemuMigrationSrcPerformPhase(driver, conn, vm, xmlin, persist_xml, uri,
|
||||
return qemuMigrationSrcPerformPhase(driver, conn, vm, persist_xml, uri,
|
||||
graphicsuri,
|
||||
migrate_disks, migrate_disks_detect_zeroes,
|
||||
migParams,
|
||||
|
Loading…
Reference in New Issue
Block a user