[systemd-devel] [PATCH] cgroup: fix incorrectly setting memory cgroup
If the memory_limit of unit is -1, we should write -1 to the file memory.limit_in_bytes. not the (unit64_t) -1. otherwise the memory.limit_in_bytes will be set to zero. --- src/core/cgroup.c | 15 +++ 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/core/cgroup.c b/src/core/cgroup.c index aee93ba..244baff 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -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)); } -- 1.8.3.1 ___ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel
Re: [systemd-devel] [PATCH] cgroup: fix incorrectly setting memory cgroup
On Fri, 13.09.13 14:43, Gao feng (gaof...@cn.fujitsu.com) wrote: If the memory_limit of unit is -1, we should write -1 to the file memory.limit_in_bytes. not the (unit64_t) -1. otherwise the memory.limit_in_bytes will be set to zero. Thanks! Applied! --- src/core/cgroup.c | 15 +++ 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/core/cgroup.c b/src/core/cgroup.c index aee93ba..244baff 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -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)); } Lennart -- Lennart Poettering - Red Hat, Inc. ___ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel