提交 90807b10 编写于 作者: J Jiri Denemark

qemu: Limit usage of qemuMonitorMigrationParams

Use this internal structure only in qemu_migration_params.c and change
other non-test users to use the high level qemuMigrationParams struct.
Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
Reviewed-by: NJán Tomko <jtomko@redhat.com>
上级 252bf243
...@@ -13533,8 +13533,7 @@ qemuDomainMigrateGetMaxDowntime(virDomainPtr dom, ...@@ -13533,8 +13533,7 @@ qemuDomainMigrateGetMaxDowntime(virDomainPtr dom,
{ {
virQEMUDriverPtr driver = dom->conn->privateData; virQEMUDriverPtr driver = dom->conn->privateData;
virDomainObjPtr vm; virDomainObjPtr vm;
qemuDomainObjPrivatePtr priv; qemuMigrationParamsPtr migParams = NULL;
qemuMonitorMigrationParams migparams = { 0 };
int ret = -1; int ret = -1;
virCheckFlags(0, -1); virCheckFlags(0, -1);
...@@ -13554,27 +13553,24 @@ qemuDomainMigrateGetMaxDowntime(virDomainPtr dom, ...@@ -13554,27 +13553,24 @@ qemuDomainMigrateGetMaxDowntime(virDomainPtr dom,
goto endjob; goto endjob;
} }
priv = vm->privateData; if (qemuMigrationParamsFetch(driver, vm, QEMU_ASYNC_JOB_NONE,
qemuDomainObjEnterMonitor(driver, vm); &migParams) < 0)
goto endjob;
if (qemuMonitorGetMigrationParams(priv->mon, &migparams) == 0) { if (qemuMigrationParamsGetDowntimeLimit(migParams, downtime) == 1) {
if (migparams.downtimeLimit_set) { virReportError(VIR_ERR_OPERATION_INVALID, "%s",
*downtime = migparams.downtimeLimit; _("Querying migration downtime is not supported by "
ret = 0; "QEMU binary"));
} else { goto endjob;
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
_("Querying migration downtime is not supported by "
"QEMU binary"));
}
} }
if (qemuDomainObjExitMonitor(driver, vm) < 0) ret = 0;
ret = -1;
endjob: endjob:
qemuDomainObjEndJob(driver, vm); qemuDomainObjEndJob(driver, vm);
cleanup: cleanup:
qemuMigrationParamsFree(migParams);
virDomainObjEndAPI(&vm); virDomainObjEndAPI(&vm);
return ret; return ret;
} }
......
...@@ -553,6 +553,22 @@ qemuMigrationParamsFetch(virQEMUDriverPtr driver, ...@@ -553,6 +553,22 @@ qemuMigrationParamsFetch(virQEMUDriverPtr driver,
} }
/**
* Returns 0 on success,
* 1 if the parameter is not supported by QEMU.
*/
int
qemuMigrationParamsGetDowntimeLimit(qemuMigrationParamsPtr migParams,
unsigned long long *value)
{
if (!migParams->params.downtimeLimit_set)
return 1;
*value = migParams->params.downtimeLimit;
return 0;
}
/** /**
* qemuMigrationParamsCheck: * qemuMigrationParamsCheck:
* *
......
...@@ -79,6 +79,10 @@ qemuMigrationParamsFetch(virQEMUDriverPtr driver, ...@@ -79,6 +79,10 @@ qemuMigrationParamsFetch(virQEMUDriverPtr driver,
int asyncJob, int asyncJob,
qemuMigrationParamsPtr *migParams); qemuMigrationParamsPtr *migParams);
int
qemuMigrationParamsGetDowntimeLimit(qemuMigrationParamsPtr migParams,
unsigned long long *value);
int int
qemuMigrationParamsCheck(virQEMUDriverPtr driver, qemuMigrationParamsCheck(virQEMUDriverPtr driver,
virDomainObjPtr vm, virDomainObjPtr vm,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册