Hi, starting of lxc domains currently fails if memory controller support is disabled in the kernel. Attached patch fixes this by ignoring the error in case the files don't exist in the cgroup filesystem. I didn't add the same exceptions for the recent hard and soft limit code since if somebody sets this values he probably wants them enforced. O.k. to apply? Cheers, -- Guido
>From 14020ffcedeef91e0ab25497c95cee5e057a5ff3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@xxxxxxxxxxx> 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 | 3 ++- src/lxc/lxc_driver.c | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c index 20616b8..645c83d 100644 --- a/src/lxc/lxc_controller.c +++ b/src/lxc/lxc_controller.c @@ -107,7 +107,8 @@ static int lxcSetContainerResources(virDomainDefPtr def) virReportSystemError(-rc, _("Unable to set memory limit for domain %s"), def->name); - goto cleanup; + 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 df814da..76d3038 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,11 @@ 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) + goto cleanup; } } -- 1.7.1
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list