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.
This commit is contained in:
parent
84121bc2ee
commit
6a94f2e938
|
@ -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));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue