|
|
a4b143 |
From c7e5130d5b3983986bfe95918c75e083fa90dd47 Mon Sep 17 00:00:00 2001
|
|
|
a4b143 |
From: Gao feng <gaofeng@cn.fujitsu.com>
|
|
|
a4b143 |
Date: Fri, 13 Sep 2013 14:43:04 +0800
|
|
|
a4b143 |
Subject: [PATCH] cgroup: fix incorrectly setting memory cgroup
|
|
|
a4b143 |
|
|
|
a4b143 |
If the memory_limit of unit is -1, we should write "-1"
|
|
|
a4b143 |
to the file memory.limit_in_bytes. not the (unit64_t) -1.
|
|
|
a4b143 |
|
|
|
a4b143 |
otherwise the memory.limit_in_bytes will be set to zero.
|
|
|
a4b143 |
---
|
|
|
a4b143 |
src/core/cgroup.c | 15 +++++++++++----
|
|
|
a4b143 |
1 file changed, 11 insertions(+), 4 deletions(-)
|
|
|
a4b143 |
|
|
|
a4b143 |
diff --git a/src/core/cgroup.c b/src/core/cgroup.c
|
|
|
a4b143 |
index 08cb64b..1f41efc 100644
|
|
|
a4b143 |
--- a/src/core/cgroup.c
|
|
|
a4b143 |
+++ b/src/core/cgroup.c
|
|
|
a4b143 |
@@ -257,14 +257,21 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha
|
|
|
a4b143 |
|
|
|
a4b143 |
if (mask & CGROUP_MEMORY) {
|
|
|
a4b143 |
char buf[DECIMAL_STR_MAX(uint64_t) + 1];
|
|
|
a4b143 |
+ if (c->memory_limit != (uint64_t) -1) {
|
|
|
a4b143 |
+ sprintf(buf, "%" PRIu64 "\n", c->memory_limit);
|
|
|
a4b143 |
+ r = cg_set_attribute("memory", path, "memory.limit_in_bytes", buf);
|
|
|
a4b143 |
+ } else
|
|
|
a4b143 |
+ r = cg_set_attribute("memory", path, "memory.limit_in_bytes", "-1");
|
|
|
a4b143 |
|
|
|
a4b143 |
- sprintf(buf, "%" PRIu64 "\n", c->memory_limit);
|
|
|
a4b143 |
- r = cg_set_attribute("memory", path, "memory.limit_in_bytes", buf);
|
|
|
a4b143 |
if (r < 0)
|
|
|
a4b143 |
log_error("Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r));
|
|
|
a4b143 |
|
|
|
a4b143 |
- sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit);
|
|
|
a4b143 |
- r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf);
|
|
|
a4b143 |
+ if (c->memory_soft_limit != (uint64_t) -1) {
|
|
|
a4b143 |
+ sprintf(buf, "%" PRIu64 "\n", c->memory_soft_limit);
|
|
|
a4b143 |
+ r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", buf);
|
|
|
a4b143 |
+ } else
|
|
|
a4b143 |
+ r = cg_set_attribute("memory", path, "memory.soft_limit_in_bytes", "-1");
|
|
|
a4b143 |
+
|
|
|
a4b143 |
if (r < 0)
|
|
|
a4b143 |
log_error("Failed to set memory.soft_limit_in_bytes on %s: %s", path, strerror(-r));
|
|
|
a4b143 |
}
|