]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Apply migration parameters in qemuMigrationDstRun
authorJim Fehlig <jfehlig@suse.com>
Tue, 21 Jan 2025 23:39:20 +0000 (16:39 -0700)
committerJim Fehlig <jfehlig@suse.com>
Thu, 20 Mar 2025 17:17:48 +0000 (11:17 -0600)
Similar to qemuMigrationSrcRun, apply migration parameters in
qemuMigrationDstRun. This allows callers to create customized
migration parameters, but delegates their application to the
function performing the migration.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
src/qemu/qemu_migration.c
src/qemu/qemu_migration.h
src/qemu/qemu_process.c

index 3c99656f11041b7ba647de46054713f0ab07905e..bd20c593f971d352f96017acc282cb59ee066198 100644 (file)
@@ -2428,7 +2428,10 @@ qemuMigrationDstGetURI(const char *migrateFrom,
 int
 qemuMigrationDstRun(virDomainObj *vm,
                     const char *uri,
-                    virDomainAsyncJob asyncJob)
+                    virDomainAsyncJob asyncJob,
+                    qemuMigrationParams *migParams,
+                    unsigned int flags)
+
 {
     virTristateBool exitOnError = VIR_TRISTATE_BOOL_ABSENT;
     qemuDomainObjPrivate *priv = vm->privateData;
@@ -2436,6 +2439,10 @@ qemuMigrationDstRun(virDomainObj *vm,
 
     VIR_DEBUG("Setting up incoming migration with URI %s", uri);
 
+    if (migParams && qemuMigrationParamsApply(vm, asyncJob,
+                                              migParams, flags) < 0)
+        return -1;
+
     /* Ask QEMU not to exit on failure during incoming migration (if supported)
      * so that we can properly check and report error during Finish phase.
      */
@@ -3366,10 +3373,6 @@ qemuMigrationDstPrepareActive(virQEMUDriver *driver,
             goto error;
     }
 
-    if (qemuMigrationParamsApply(vm, VIR_ASYNC_JOB_MIGRATION_IN,
-                                 migParams, flags) < 0)
-        goto error;
-
     if (mig->nbd &&
         flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_INC)) {
         const char *nbdTLSAlias = NULL;
@@ -3401,7 +3404,8 @@ qemuMigrationDstPrepareActive(virQEMUDriver *driver,
     }
 
     if (qemuMigrationDstRun(vm, incoming->uri,
-                            VIR_ASYNC_JOB_MIGRATION_IN) < 0)
+                            VIR_ASYNC_JOB_MIGRATION_IN,
+                            migParams, flags) < 0)
         goto error;
 
     if (qemuProcessFinishStartup(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN,
index 9fa007b949c7096020b8f888b3bbb7e59d988527..71a99747536f98a58000c64ba8282aad5766beda 100644 (file)
@@ -283,7 +283,10 @@ qemuMigrationDstGetURI(const char *migrateFrom,
 int
 qemuMigrationDstRun(virDomainObj *vm,
                     const char *uri,
-                    virDomainAsyncJob asyncJob);
+                    virDomainAsyncJob asyncJob,
+                    qemuMigrationParams *migParams,
+                    unsigned int flags);
+
 
 void
 qemuMigrationSrcPostcopyFailed(virDomainObj *vm);
index cd1fe44d53c1e2ed8db10506e78b1919a68e3712..f9a7653bbc05755b358891f0c1507302a4f3682b 100644 (file)
@@ -8478,7 +8478,7 @@ qemuProcessStart(virConnectPtr conn,
     relabel = true;
 
     if (incoming) {
-        if (qemuMigrationDstRun(vm, incoming->uri, asyncJob) < 0)
+        if (qemuMigrationDstRun(vm, incoming->uri, asyncJob, NULL, 0) < 0)
             goto stop;
     } else {
         /* Refresh state of devices from QEMU. During migration this happens