qemu: Reuse virDomainObjGetDefs in qemuDomainGetMemoryParameters

Simplify the code by restructuring control flow and reusing the better
helper.
This commit is contained in:
Peter Krempa 2015-06-15 20:48:44 +02:00
parent 68ba0d8a89
commit 58edccb4a5
1 changed files with 8 additions and 19 deletions

View File

@ -9936,7 +9936,6 @@ qemuDomainGetMemoryParameters(virDomainPtr dom,
virDomainObjPtr vm = NULL; virDomainObjPtr vm = NULL;
virDomainDefPtr persistentDef = NULL; virDomainDefPtr persistentDef = NULL;
int ret = -1; int ret = -1;
virCapsPtr caps = NULL;
qemuDomainObjPrivatePtr priv; qemuDomainObjPrivatePtr priv;
virQEMUDriverConfigPtr cfg = NULL; virQEMUDriverConfigPtr cfg = NULL;
unsigned long long swap_hard_limit, mem_hard_limit, mem_soft_limit; unsigned long long swap_hard_limit, mem_hard_limit, mem_soft_limit;
@ -9945,9 +9944,6 @@ qemuDomainGetMemoryParameters(virDomainPtr dom,
VIR_DOMAIN_AFFECT_CONFIG | VIR_DOMAIN_AFFECT_CONFIG |
VIR_TYPED_PARAM_STRING_OKAY, -1); VIR_TYPED_PARAM_STRING_OKAY, -1);
/* We don't return strings, and thus trivially support this flag. */
flags &= ~VIR_TYPED_PARAM_STRING_OKAY;
if (!(vm = qemuDomObjFromDomain(dom))) if (!(vm = qemuDomObjFromDomain(dom)))
return -1; return -1;
@ -9963,21 +9959,9 @@ qemuDomainGetMemoryParameters(virDomainPtr dom,
goto cleanup; goto cleanup;
} }
if (!(caps = virQEMUDriverGetCapabilities(driver, false))) if (virDomainObjGetDefs(vm, flags, NULL, &persistentDef) < 0)
goto cleanup; goto cleanup;
if (virDomainLiveConfigHelperMethod(caps, driver->xmlopt, vm, &flags,
&persistentDef) < 0)
goto cleanup;
if (flags & VIR_DOMAIN_AFFECT_LIVE) {
if (!virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_MEMORY)) {
virReportError(VIR_ERR_OPERATION_INVALID,
"%s", _("cgroup memory controller is not mounted"));
goto cleanup;
}
}
if ((*nparams) == 0) { if ((*nparams) == 0) {
/* Current number of memory parameters supported by cgroups */ /* Current number of memory parameters supported by cgroups */
*nparams = QEMU_NB_MEM_PARAM; *nparams = QEMU_NB_MEM_PARAM;
@ -9985,11 +9969,17 @@ qemuDomainGetMemoryParameters(virDomainPtr dom,
goto cleanup; goto cleanup;
} }
if (flags & VIR_DOMAIN_AFFECT_CONFIG) { if (persistentDef) {
mem_hard_limit = persistentDef->mem.hard_limit; mem_hard_limit = persistentDef->mem.hard_limit;
mem_soft_limit = persistentDef->mem.soft_limit; mem_soft_limit = persistentDef->mem.soft_limit;
swap_hard_limit = persistentDef->mem.swap_hard_limit; swap_hard_limit = persistentDef->mem.swap_hard_limit;
} else { } else {
if (!virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_MEMORY)) {
virReportError(VIR_ERR_OPERATION_INVALID,
"%s", _("cgroup memory controller is not mounted"));
goto cleanup;
}
if (virCgroupGetMemoryHardLimit(priv->cgroup, &mem_hard_limit) < 0) if (virCgroupGetMemoryHardLimit(priv->cgroup, &mem_hard_limit) < 0)
goto cleanup; goto cleanup;
@ -10014,7 +10004,6 @@ qemuDomainGetMemoryParameters(virDomainPtr dom,
cleanup: cleanup:
virDomainObjEndAPI(&vm); virDomainObjEndAPI(&vm);
virObjectUnref(caps);
virObjectUnref(cfg); virObjectUnref(cfg);
return ret; return ret;
} }