提交 54e969c5 编写于 作者: J Jiri Denemark

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: NJiri Denemark <jdenemar@redhat.com>
Reviewed-by: NJán Tomko <jtomko@redhat.com>
上级 c160275d
......@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册