From 679b464bd41667d80b361f3d14397bb8c6180721 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Fri, 15 Oct 2010 10:01:38 +0200 Subject: [PATCH] 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 --- src/lxc/lxc_controller.c | 4 +++- src/lxc/lxc_driver.c | 11 ++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c index 20616b8673..2a4f113315 100644 --- a/src/lxc/lxc_controller.c +++ b/src/lxc/lxc_controller.c @@ -107,7 +107,9 @@ static int lxcSetContainerResources(virDomainDefPtr def) virReportSystemError(-rc, _("Unable to set memory limit for domain %s"), 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) { diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 7563a8ce46..0145d5e0b4 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -485,7 +485,7 @@ static int lxcDomainGetInfo(virDomainPtr dom, lxc_driver_t *driver = dom->conn->privateData; virDomainObjPtr vm; virCgroupPtr cgroup = NULL; - int ret = -1; + int ret = -1, rc; lxcDriverLock(driver); vm = virDomainFindByUUID(&driver->domains, dom->uuid); @@ -515,10 +515,15 @@ static int lxcDomainGetInfo(virDomainPtr dom, "%s", _("Cannot read cputime for domain")); goto cleanup; } - if (virCgroupGetMemoryUsage(cgroup, &(info->memory)) < 0) { + if ((rc = virCgroupGetMemoryUsage(cgroup, &(info->memory))) < 0) { lxcError(VIR_ERR_OPERATION_FAILED, "%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; } } -- GitLab