mirror of https://gitee.com/openkylin/libvirt.git
Don't fail lxc domain start when memory controller support is missing
Debian stock kernel has CONFIG_CGROUP_MEM_RES_CTLR disabled due to the overhead [1]. Allow to start containers if the corresponding files in the cgroup filesystem are missing. This fixes Debian bug #566180 [2]. [1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=534964 [2] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=566180
This commit is contained in:
parent
83e5711418
commit
679b464bd4
|
@ -107,7 +107,9 @@ static int lxcSetContainerResources(virDomainDefPtr def)
|
||||||
virReportSystemError(-rc,
|
virReportSystemError(-rc,
|
||||||
_("Unable to set memory limit for domain %s"),
|
_("Unable to set memory limit for domain %s"),
|
||||||
def->name);
|
def->name);
|
||||||
goto cleanup;
|
/* Don't fail if we can't set memory due to lack of kernel support */
|
||||||
|
if (rc != -ENOENT)
|
||||||
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(def->mem.hard_limit) {
|
if(def->mem.hard_limit) {
|
||||||
|
|
|
@ -485,7 +485,7 @@ static int lxcDomainGetInfo(virDomainPtr dom,
|
||||||
lxc_driver_t *driver = dom->conn->privateData;
|
lxc_driver_t *driver = dom->conn->privateData;
|
||||||
virDomainObjPtr vm;
|
virDomainObjPtr vm;
|
||||||
virCgroupPtr cgroup = NULL;
|
virCgroupPtr cgroup = NULL;
|
||||||
int ret = -1;
|
int ret = -1, rc;
|
||||||
|
|
||||||
lxcDriverLock(driver);
|
lxcDriverLock(driver);
|
||||||
vm = virDomainFindByUUID(&driver->domains, dom->uuid);
|
vm = virDomainFindByUUID(&driver->domains, dom->uuid);
|
||||||
|
@ -515,10 +515,15 @@ static int lxcDomainGetInfo(virDomainPtr dom,
|
||||||
"%s", _("Cannot read cputime for domain"));
|
"%s", _("Cannot read cputime for domain"));
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
if (virCgroupGetMemoryUsage(cgroup, &(info->memory)) < 0) {
|
if ((rc = virCgroupGetMemoryUsage(cgroup, &(info->memory))) < 0) {
|
||||||
lxcError(VIR_ERR_OPERATION_FAILED,
|
lxcError(VIR_ERR_OPERATION_FAILED,
|
||||||
"%s", _("Cannot read memory usage for domain"));
|
"%s", _("Cannot read memory usage for domain"));
|
||||||
goto cleanup;
|
if (rc == -ENOENT) {
|
||||||
|
/* Don't fail if we can't read memory usage due to a lack of
|
||||||
|
* kernel support */
|
||||||
|
info->memory = 0;
|
||||||
|
} else
|
||||||
|
goto cleanup;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue