cgroup: when discovering which controllers the kernel supports mask with what we support

Let's use our new CGROUP_MASK_V1 and CGROUP_MASK_V2 definitions for
this.
This commit is contained in:
Lennart Poettering 2018-10-24 17:35:19 +02:00
parent ab275f2386
commit 03afd78029

View file

@ -2377,24 +2377,26 @@ int cg_mask_supported(CGroupMask *ret) {
if (r < 0) if (r < 0)
return r; return r;
/* Currently, we support the cpu, memory, io and pids /* Currently, we support the cpu, memory, io and pids controller in the unified hierarchy, mask
* controller in the unified hierarchy, mask
* everything else off. */ * everything else off. */
mask &= CGROUP_MASK_CPU | CGROUP_MASK_MEMORY | CGROUP_MASK_IO | CGROUP_MASK_PIDS; mask &= CGROUP_MASK_V2;
} else { } else {
CGroupController c; CGroupController c;
/* In the legacy hierarchy, we check whether which /* In the legacy hierarchy, we check which hierarchies are mounted. */
* hierarchies are mounted. */
mask = 0; mask = 0;
for (c = 0; c < _CGROUP_CONTROLLER_MAX; c++) { for (c = 0; c < _CGROUP_CONTROLLER_MAX; c++) {
CGroupMask bit = CGROUP_CONTROLLER_TO_MASK(c);
const char *n; const char *n;
if (!FLAGS_SET(CGROUP_MASK_V1, bit))
continue;
n = cgroup_controller_to_string(c); n = cgroup_controller_to_string(c);
if (controller_is_accessible(n) >= 0) if (controller_is_accessible(n) >= 0)
mask |= CGROUP_CONTROLLER_TO_MASK(c); mask |= bit;
} }
} }