qemu: Pass migration flags to qemuMigrationParamsApply

The flags will later be used to determine which parameters should
actually be applied.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Jiri Denemark 2022-06-29 12:00:03 +02:00
parent f9dcc01a0f
commit 0eae541257
4 changed files with 17 additions and 11 deletions

View File

@ -13078,7 +13078,7 @@ qemuDomainMigrateSetMaxDowntime(virDomainPtr dom,
goto endjob; goto endjob;
if (qemuMigrationParamsApply(driver, vm, VIR_ASYNC_JOB_NONE, if (qemuMigrationParamsApply(driver, vm, VIR_ASYNC_JOB_NONE,
migParams) < 0) migParams, 0) < 0)
goto endjob; goto endjob;
} else { } else {
qemuDomainObjEnterMonitor(driver, vm); qemuDomainObjEnterMonitor(driver, vm);
@ -13260,7 +13260,7 @@ qemuDomainMigrateSetCompressionCache(virDomainPtr dom,
goto endjob; goto endjob;
if (qemuMigrationParamsApply(driver, vm, VIR_ASYNC_JOB_NONE, if (qemuMigrationParamsApply(driver, vm, VIR_ASYNC_JOB_NONE,
migParams) < 0) migParams, 0) < 0)
goto endjob; goto endjob;
} else { } else {
qemuDomainObjEnterMonitor(driver, vm); qemuDomainObjEnterMonitor(driver, vm);
@ -13347,7 +13347,7 @@ qemuDomainMigrateSetMaxSpeed(virDomainPtr dom,
goto endjob; goto endjob;
if (qemuMigrationParamsApply(driver, vm, VIR_ASYNC_JOB_NONE, if (qemuMigrationParamsApply(driver, vm, VIR_ASYNC_JOB_NONE,
migParams) < 0) migParams, 0) < 0)
goto endjob; goto endjob;
} else { } else {
int rc; int rc;

View File

@ -3213,7 +3213,7 @@ qemuMigrationDstPrepareActive(virQEMUDriver *driver,
} }
if (qemuMigrationParamsApply(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, if (qemuMigrationParamsApply(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN,
migParams) < 0) migParams, flags) < 0)
goto error; goto error;
if (mig->nbd && if (mig->nbd &&
@ -4801,7 +4801,7 @@ qemuMigrationSrcRun(virQEMUDriver *driver,
goto error; goto error;
if (qemuMigrationParamsApply(driver, vm, VIR_ASYNC_JOB_MIGRATION_OUT, if (qemuMigrationParamsApply(driver, vm, VIR_ASYNC_JOB_MIGRATION_OUT,
migParams) < 0) migParams, flags) < 0)
goto error; goto error;
if (flags & VIR_MIGRATE_ZEROCOPY) { if (flags & VIR_MIGRATE_ZEROCOPY) {
@ -6895,7 +6895,7 @@ qemuMigrationSrcToFile(virQEMUDriver *driver, virDomainObj *vm,
QEMU_DOMAIN_MIG_BANDWIDTH_MAX * 1024 * 1024) < 0) QEMU_DOMAIN_MIG_BANDWIDTH_MAX * 1024 * 1024) < 0)
return -1; return -1;
if (qemuMigrationParamsApply(driver, vm, asyncJob, migParams) < 0) if (qemuMigrationParamsApply(driver, vm, asyncJob, migParams, 0) < 0)
return -1; return -1;
priv->migMaxBandwidth = QEMU_DOMAIN_MIG_BANDWIDTH_MAX; priv->migMaxBandwidth = QEMU_DOMAIN_MIG_BANDWIDTH_MAX;
@ -6991,7 +6991,7 @@ qemuMigrationSrcToFile(virQEMUDriver *driver, virDomainObj *vm,
QEMU_MIGRATION_PARAM_MAX_BANDWIDTH, QEMU_MIGRATION_PARAM_MAX_BANDWIDTH,
saveMigBandwidth * 1024 * 1024) == 0) saveMigBandwidth * 1024 * 1024) == 0)
ignore_value(qemuMigrationParamsApply(driver, vm, asyncJob, ignore_value(qemuMigrationParamsApply(driver, vm, asyncJob,
migParams)); migParams, 0));
} else { } else {
if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) { if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) {
qemuMonitorSetMigrationSpeed(priv->mon, saveMigBandwidth); qemuMonitorSetMigrationSpeed(priv->mon, saveMigBandwidth);

View File

@ -833,8 +833,10 @@ qemuMigrationCapsToJSON(virBitmap *caps,
* @vm: domain object * @vm: domain object
* @asyncJob: migration job * @asyncJob: migration job
* @migParams: migration parameters to send to QEMU * @migParams: migration parameters to send to QEMU
* @apiFlags: migration flags, some of them may affect which parameters are applied
* *
* Send all parameters stored in @migParams to QEMU. * Send parameters stored in @migParams to QEMU. If @apiFlags is non-zero, some
* parameters that do not make sense for the enabled flags will be ignored.
* *
* Returns 0 on success, -1 on failure. * Returns 0 on success, -1 on failure.
*/ */
@ -842,7 +844,8 @@ int
qemuMigrationParamsApply(virQEMUDriver *driver, qemuMigrationParamsApply(virQEMUDriver *driver,
virDomainObj *vm, virDomainObj *vm,
int asyncJob, int asyncJob,
qemuMigrationParams *migParams) qemuMigrationParams *migParams,
unsigned long apiFlags G_GNUC_UNUSED)
{ {
qemuDomainObjPrivate *priv = vm->privateData; qemuDomainObjPrivate *priv = vm->privateData;
bool xbzrleCacheSize_old = false; bool xbzrleCacheSize_old = false;
@ -1245,7 +1248,9 @@ qemuMigrationParamsReset(virQEMUDriver *driver,
if (!virDomainObjIsActive(vm) || !origParams) if (!virDomainObjIsActive(vm) || !origParams)
goto cleanup; goto cleanup;
if (qemuMigrationParamsApply(driver, vm, asyncJob, origParams) < 0) /* Do not pass apiFlags to qemuMigrationParamsApply here to make sure all
* parameters and capabilities are reset. */
if (qemuMigrationParamsApply(driver, vm, asyncJob, origParams, 0) < 0)
goto cleanup; goto cleanup;
qemuMigrationParamsResetTLS(driver, vm, asyncJob, origParams, apiFlags); qemuMigrationParamsResetTLS(driver, vm, asyncJob, origParams, apiFlags);

View File

@ -98,7 +98,8 @@ int
qemuMigrationParamsApply(virQEMUDriver *driver, qemuMigrationParamsApply(virQEMUDriver *driver,
virDomainObj *vm, virDomainObj *vm,
int asyncJob, int asyncJob,
qemuMigrationParams *migParams); qemuMigrationParams *migParams,
unsigned long apiFlags);
int int
qemuMigrationParamsEnableTLS(virQEMUDriver *driver, qemuMigrationParamsEnableTLS(virQEMUDriver *driver,