From: Jiri Denemark Date: Mon, 4 Feb 2019 15:52:05 +0000 (+0100) Subject: qemu: Rework qemuDomainMigrateSetMaxSpeed X-Git-Tag: v5.1.0-rc1~236 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=54e969c5388689cd9032918ef8e78168d5aee1a1;p=thirdparty%2Flibvirt.git qemu: Rework qemuDomainMigrateSetMaxSpeed Let's make the code flow easier to follow and get rid of the ugly endjob label inside if branch. Signed-off-by: Jiri Denemark Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 4084673cdb..0c0ed4fab9 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -14275,6 +14275,7 @@ qemuDomainMigrateSetMaxSpeed(virDomainPtr dom, virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; qemuDomainObjPrivatePtr priv; + int rc; int ret = -1; virCheckFlags(0, -1); @@ -14294,28 +14295,30 @@ qemuDomainMigrateSetMaxSpeed(virDomainPtr dom, goto cleanup; } - if (virDomainObjIsActive(vm)) { - if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MIGRATION_OP) < 0) - goto cleanup; + if (!virDomainObjIsActive(vm)) { + priv->migMaxBandwidth = bandwidth; + ret = 0; + goto cleanup; + } - if (virDomainObjCheckActive(vm) < 0) - goto endjob; + if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MIGRATION_OP) < 0) + goto cleanup; - VIR_DEBUG("Setting migration bandwidth to %luMbs", bandwidth); - qemuDomainObjEnterMonitor(driver, vm); - ret = qemuMonitorSetMigrationSpeed(priv->mon, bandwidth); - if (qemuDomainObjExitMonitor(driver, vm) < 0) - ret = -1; + if (virDomainObjCheckActive(vm) < 0) + goto endjob; - if (ret == 0) - priv->migMaxBandwidth = bandwidth; + VIR_DEBUG("Setting migration bandwidth to %luMbs", bandwidth); + qemuDomainObjEnterMonitor(driver, vm); + rc = qemuMonitorSetMigrationSpeed(priv->mon, bandwidth); + if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0) + goto endjob; + + priv->migMaxBandwidth = bandwidth; + + ret = 0; endjob: - qemuDomainObjEndJob(driver, vm); - } else { - priv->migMaxBandwidth = bandwidth; - ret = 0; - } + qemuDomainObjEndJob(driver, vm); cleanup: virDomainObjEndAPI(&vm);