qemuDomainObjPrivate *priv;
bool postcopy = !!(flags & VIR_DOMAIN_MIGRATE_MAX_SPEED_POSTCOPY);
g_autoptr(qemuMigrationParams) migParams = NULL;
- bool bwParam;
+ qemuMigrationParam param;
unsigned long long max;
int ret = -1;
VIR_DEBUG("Setting migration bandwidth to %luMbs", bandwidth);
- bwParam = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH);
- if (postcopy || bwParam) {
- qemuMigrationParam param;
-
- if (!(migParams = qemuMigrationParamsNew()))
- goto endjob;
-
- if (postcopy)
- param = QEMU_MIGRATION_PARAM_MAX_POSTCOPY_BANDWIDTH;
- else
- param = QEMU_MIGRATION_PARAM_MAX_BANDWIDTH;
+ if (!(migParams = qemuMigrationParamsNew()))
+ goto endjob;
- if (qemuMigrationParamsSetULL(migParams, param,
- bandwidth * 1024 * 1024) < 0)
- goto endjob;
+ if (postcopy)
+ param = QEMU_MIGRATION_PARAM_MAX_POSTCOPY_BANDWIDTH;
+ else
+ param = QEMU_MIGRATION_PARAM_MAX_BANDWIDTH;
- if (qemuMigrationParamsApply(driver, vm, VIR_ASYNC_JOB_NONE,
- migParams, 0) < 0)
- goto endjob;
- } else {
- int rc;
+ if (qemuMigrationParamsSetULL(migParams, param,
+ bandwidth * 1024 * 1024) < 0)
+ goto endjob;
- qemuDomainObjEnterMonitor(driver, vm);
- rc = qemuMonitorSetMigrationSpeed(priv->mon, bandwidth);
- qemuDomainObjExitMonitor(vm);
- if (rc < 0)
- goto endjob;
- }
+ if (qemuMigrationParamsApply(driver, vm, VIR_ASYNC_JOB_NONE,
+ migParams, 0) < 0)
+ goto endjob;
if (!postcopy)
priv->migMaxBandwidth = bandwidth;
virErrorPtr orig_err = NULL;
unsigned int cookieFlags = 0;
bool abort_on_error = !!(flags & VIR_MIGRATE_ABORT_ON_ERROR);
- bool bwParam = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH);
bool storageMigration = flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_INC);
bool cancel = false;
unsigned int waitFlags;
goto error;
}
- if (bwParam &&
- qemuMigrationParamsSetULL(migParams, QEMU_MIGRATION_PARAM_MAX_BANDWIDTH,
+ if (qemuMigrationParamsSetULL(migParams, QEMU_MIGRATION_PARAM_MAX_BANDWIDTH,
priv->migMaxBandwidth * 1024 * 1024) < 0)
goto error;
goto exit_monitor;
}
- if (!bwParam &&
- qemuMonitorSetMigrationSpeed(priv->mon, priv->migMaxBandwidth) < 0)
- goto exit_monitor;
-
rc = qemuMigrationSrcStart(vm, spec, migrate_flags, &fd);
qemuDomainObjExitMonitor(vm);
virDomainAsyncJob asyncJob)
{
qemuDomainObjPrivate *priv = vm->privateData;
- bool bwParam = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH);
int rc;
int ret = -1;
int pipeFD[2] = { -1, -1 };
/* Increase migration bandwidth to unlimited since target is a file.
* Failure to change migration speed is not fatal. */
- if (bwParam) {
- if (!(migParams = qemuMigrationParamsNew()))
- return -1;
+ if (!(migParams = qemuMigrationParamsNew()))
+ return -1;
- if (qemuMigrationParamsSetULL(migParams,
- QEMU_MIGRATION_PARAM_MAX_BANDWIDTH,
- QEMU_DOMAIN_MIG_BANDWIDTH_MAX * 1024 * 1024) < 0)
- return -1;
+ if (qemuMigrationParamsSetULL(migParams,
+ QEMU_MIGRATION_PARAM_MAX_BANDWIDTH,
+ QEMU_DOMAIN_MIG_BANDWIDTH_MAX * 1024 * 1024) < 0)
+ return -1;
- if (qemuMigrationParamsApply(driver, vm, asyncJob, migParams, 0) < 0)
- return -1;
+ if (qemuMigrationParamsApply(driver, vm, asyncJob, migParams, 0) < 0)
+ return -1;
- priv->migMaxBandwidth = QEMU_DOMAIN_MIG_BANDWIDTH_MAX;
- } else {
- if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) {
- qemuMonitorSetMigrationSpeed(priv->mon,
- QEMU_DOMAIN_MIG_BANDWIDTH_MAX);
- priv->migMaxBandwidth = QEMU_DOMAIN_MIG_BANDWIDTH_MAX;
- qemuDomainObjExitMonitor(vm);
- }
- }
+ priv->migMaxBandwidth = QEMU_DOMAIN_MIG_BANDWIDTH_MAX;
if (!virDomainObjIsActive(vm)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
/* Restore max migration bandwidth */
if (virDomainObjIsActive(vm)) {
- if (bwParam) {
- if (qemuMigrationParamsSetULL(migParams,
- QEMU_MIGRATION_PARAM_MAX_BANDWIDTH,
- saveMigBandwidth * 1024 * 1024) == 0)
- ignore_value(qemuMigrationParamsApply(driver, vm, asyncJob,
- migParams, 0));
- } else {
- if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) {
- qemuMonitorSetMigrationSpeed(priv->mon, saveMigBandwidth);
- qemuDomainObjExitMonitor(vm);
- }
- }
+ if (qemuMigrationParamsSetULL(migParams,
+ QEMU_MIGRATION_PARAM_MAX_BANDWIDTH,
+ saveMigBandwidth * 1024 * 1024) == 0)
+ ignore_value(qemuMigrationParamsApply(driver, vm, asyncJob,
+ migParams, 0));
priv->migMaxBandwidth = saveMigBandwidth;
}