summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-11-01 23:44:36 +0100
committerGitHub <noreply@github.com>2019-11-01 23:44:36 +0100
commitdf957acc6603a04e62dee7e911c65dc7dbcb6208 (patch)
tree85f130d8a37290ded2ef07115bf44567fcdd22d7
parentb9dc511954b080d8b05a44f1758be6dbb4078852 (diff)
parenta897a7b837b38de3bde162f4f83d9523558b3516 (diff)
downloadsystemd-df957acc6603a04e62dee7e911c65dc7dbcb6208.tar.gz
Merge pull request #13905 from poettering/cpuset-fixes
fixes to the cpuset cgroup logic
-rw-r--r--src/core/cgroup.c14
-rw-r--r--src/core/dbus-cgroup.c12
2 files changed, 13 insertions, 13 deletions
diff --git a/src/core/cgroup.c b/src/core/cgroup.c
index 981aca53cd..ec8a262314 100644
--- a/src/core/cgroup.c
+++ b/src/core/cgroup.c
@@ -360,9 +360,7 @@ static char *format_cgroup_memory_limit_comparison(char *buf, size_t l, Unit *u,
}
void cgroup_context_dump(Unit *u, FILE* f, const char *prefix) {
- _cleanup_free_ char *disable_controllers_str = NULL;
- _cleanup_free_ char *cpuset_cpus = NULL;
- _cleanup_free_ char *cpuset_mems = NULL;
+ _cleanup_free_ char *disable_controllers_str = NULL, *cpuset_cpus = NULL, *cpuset_mems = NULL;
CGroupIODeviceLimit *il;
CGroupIODeviceWeight *iw;
CGroupIODeviceLatency *l;
@@ -437,8 +435,8 @@ void cgroup_context_dump(Unit *u, FILE* f, const char *prefix) {
prefix, c->startup_cpu_shares,
prefix, format_timespan(q, sizeof(q), c->cpu_quota_per_sec_usec, 1),
prefix, format_timespan(v, sizeof(v), c->cpu_quota_period_usec, 1),
- prefix, cpuset_cpus,
- prefix, cpuset_mems,
+ prefix, strempty(cpuset_cpus),
+ prefix, strempty(cpuset_mems),
prefix, c->io_weight,
prefix, c->startup_io_weight,
prefix, c->blockio_weight,
@@ -974,8 +972,10 @@ static void cgroup_apply_unified_cpuset(Unit *u, const CPUSet *cpus, const char
_cleanup_free_ char *buf = NULL;
buf = cpu_set_to_range_string(cpus);
- if (!buf)
- return;
+ if (!buf) {
+ log_oom();
+ return;
+ }
(void) set_attribute_and_warn(u, "cpuset", name, buf);
}
diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c
index b30318b943..647c3a512c 100644
--- a/src/core/dbus-cgroup.c
+++ b/src/core/dbus-cgroup.c
@@ -926,23 +926,23 @@ int bus_cgroup_set_property(
if (!UNIT_WRITE_FLAGS_NOOP(flags)) {
_cleanup_free_ char *setstr = NULL;
- _cleanup_free_ char *data = NULL;
CPUSet *set;
setstr = cpu_set_to_range_string(&new_set);
+ if (!setstr)
+ return -ENOMEM;
if (streq(name, "AllowedCPUs"))
set = &c->cpuset_cpus;
else
set = &c->cpuset_mems;
- if (asprintf(&data, "%s=%s", name, setstr) < 0)
- return -ENOMEM;
-
cpu_set_reset(set);
- cpu_set_add_all(set, &new_set);
+ *set = new_set;
+ new_set = (CPUSet) {};
+
unit_invalidate_cgroup(u, CGROUP_MASK_CPUSET);
- unit_write_setting(u, flags, name, data);
+ unit_write_settingf(u, flags, name, "%s=%s", name, setstr);
}
return 1;