int *nparams,
unsigned int flags)
{
- virCapsPtr caps = NULL;
virDomainDefPtr persistentDef = NULL;
+ virDomainDefPtr def = NULL;
virDomainObjPtr vm = NULL;
virLXCDomainObjPrivatePtr priv = NULL;
- virLXCDriverPtr driver = dom->conn->privateData;
unsigned long long val;
int ret = -1;
size_t i;
priv = vm->privateData;
- if (virDomainGetMemoryParametersEnsureACL(dom->conn, vm->def) < 0 ||
- !(caps = virLXCDriverGetCapabilities(driver, false)) ||
- virDomainLiveConfigHelperMethod(caps, driver->xmlopt,
- vm, &flags, &persistentDef) < 0)
+ if (virDomainGetMemoryParametersEnsureACL(dom->conn, vm->def) < 0)
goto cleanup;
- if (flags & VIR_DOMAIN_AFFECT_LIVE &&
+ if (virDomainObjGetDefs(vm, flags, &def, &persistentDef) < 0)
+ goto cleanup;
+
+ if (def &&
!virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_MEMORY)) {
virReportError(VIR_ERR_OPERATION_INVALID,
"%s", _("cgroup memory controller is not mounted"));
switch (i) {
case 0: /* fill memory hard limit here */
- if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
+ if (persistentDef) {
val = persistentDef->mem.hard_limit;
} else if (virCgroupGetMemoryHardLimit(priv->cgroup, &val) < 0) {
goto cleanup;
goto cleanup;
break;
case 1: /* fill memory soft limit here */
- if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
+ if (persistentDef) {
val = persistentDef->mem.soft_limit;
} else if (virCgroupGetMemorySoftLimit(priv->cgroup, &val) < 0) {
goto cleanup;
goto cleanup;
break;
case 2: /* fill swap hard limit here */
- if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
+ if (persistentDef) {
val = persistentDef->mem.swap_hard_limit;
} else if (virCgroupGetMemSwapHardLimit(priv->cgroup, &val) < 0) {
goto cleanup;
cleanup:
virDomainObjEndAPI(&vm);
- virObjectUnref(caps);
return ret;
}