X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fcgroup.c;h=9277dd69f6e42eb2d14a07fc49001e41a0def7df;hb=112a7f4696ebb96abdb42df62e1e794e903f66b3;hp=aee93ba0a8b214ef750359a660a5cbe6ecfd706b;hpb=84121bc2ee2b1af811a50bc6974115aba603c806;p=elogind.git diff --git a/src/core/cgroup.c b/src/core/cgroup.c index aee93ba0a..9277dd69f 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -92,7 +92,7 @@ void cgroup_context_dump(CGroupContext *c, FILE* f, const char *prefix) { "%sBlockIOAccounting=%s\n" "%sMemoryAccounting=%s\n" "%sCPUShares=%lu\n" - "%sBlockIOWeight%lu\n" + "%sBlockIOWeight=%lu\n" "%sMemoryLimit=%" PRIu64 "\n" "%sMemorySoftLimit=%" PRIu64 "\n" "%sDevicePolicy=%s\n", @@ -257,14 +257,21 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha if (mask & CGROUP_MEMORY) { char buf[DECIMAL_STR_MAX(uint64_t) + 1]; + if (c->memory_limit != (uint64_t) -1) { + sprintf(buf, "%" PRIu64 "\n", c->memory_limit); + r = cg_set_attribute("memory", path, "memory.limit_in_bytes", buf); + } else + r = cg_set_attribute("memory", path, "memory.limit_in_bytes", "-1"); - sprintf(buf, "%" PRIu64 "\n", c->memory_limit); - r = cg_set_attribute("memory", path, "memory.limit_in_bytes", buf); if (r < 0) log_error("Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r)); - sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit); - r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf); + if (c->memory_soft_limit != (uint64_t) -1) { + sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit); + r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf); + } else + r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", "-1"); + if (r < 0) log_error("Failed to set memory.soft_limit_in_bytes on %s: %s", path, strerror(-r)); } @@ -395,8 +402,8 @@ static int unit_create_cgroups(Unit *u, CGroupControllerMask mask) { is_in_hash = true; if (r < 0) { - free(path); log_error("cgroup %s exists already: %s", path, strerror(-r)); + free(path); return r; }