summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
authorMichal Sekletár <msekleta@redhat.com>2020-02-17 13:50:31 +0100
committerMichal Sekletár <msekleta@redhat.com>2020-03-16 08:57:28 +0100
commite2b2fb7f566d13a3de61952b5356cd4d2eaee917 (patch)
tree3ab1e0c2ee7358be71c1197b16f95391ad7f1487 /src/shared
parent1808f76870d8368542f058b99df89cf0a4a2d011 (diff)
downloadsystemd-e2b2fb7f566d13a3de61952b5356cd4d2eaee917.tar.gz
core: add support for setting CPUAffinity= to special "numa" value
systemd will automatically derive CPU affinity mask from NUMA node mask. Fixes #13248
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/bus-unit-util.c8
-rw-r--r--src/shared/cpu-set-util.c4
2 files changed, 10 insertions, 2 deletions
diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c
index 98cf51aeda..a30876c1a1 100644
--- a/src/shared/bus-unit-util.c
+++ b/src/shared/bus-unit-util.c
@@ -29,6 +29,7 @@
#include "signal-util.h"
#include "socket-util.h"
#include "sort-util.h"
+#include "stdio-util.h"
#include "string-util.h"
#include "syslog-util.h"
#include "terminal-util.h"
@@ -1103,6 +1104,13 @@ static int bus_append_execute_property(sd_bus_message *m, const char *field, con
_cleanup_free_ uint8_t *array = NULL;
size_t allocated;
+ if (eq && streq(eq, "numa")) {
+ r = sd_bus_message_append(m, "(sv)", "CPUAffinityFromNUMA", "b", true);
+ if (r < 0)
+ return bus_log_create_error(r);
+ return r;
+ }
+
r = parse_cpu_set(eq, &cpuset);
if (r < 0)
return log_error_errno(r, "Failed to parse %s value: %s", field, eq);
diff --git a/src/shared/cpu-set-util.c b/src/shared/cpu-set-util.c
index 97c16ebb8c..9b9238362f 100644
--- a/src/shared/cpu-set-util.c
+++ b/src/shared/cpu-set-util.c
@@ -131,7 +131,7 @@ int cpu_set_add_all(CPUSet *a, const CPUSet *b) {
return r;
}
- return 0;
+ return 1;
}
int parse_cpu_set_full(
@@ -216,7 +216,7 @@ int parse_cpu_set_extend(
if (!old->set) {
*old = cpuset;
cpuset = (CPUSet) {};
- return 0;
+ return 1;
}
return cpu_set_add_all(old, &cpuset);