]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
vircgroupv2: detect controllers enabled in parent cgroup
authorPavel Hrdina <phrdina@redhat.com>
Thu, 29 Oct 2020 15:05:20 +0000 (16:05 +0100)
committerPavel Hrdina <phrdina@redhat.com>
Tue, 3 Nov 2020 20:26:32 +0000 (21:26 +0100)
With cgroups v2 working with controllers is a bit more complicated then
with cgroups v1 where the controller had to be mounted.

There are two files, cgroups.controllers and cgroup.subtree_control.
The file cgroup.controllers lists all controllers enabled in the current
cgroup and cgroups.subtree_control, as the name suggest, controls which
controllers are enabled for a subtree of cgroups.

Now the issue here is that the current code doesn't make any difference
if the @parent variable is NULL or not because ../cgroup.subtree_control
will list the same controllers as ./cgroup.controllers.

The whole point of the @parent variable is when we are building the
cgroup topology ourselves without systemd help we need to detect which
controllers are enabled in the parent cgroup in order to enable them for
the current cgroup as well and for that we need to check
cgroup.controllers of the parent group.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/util/vircgroupv2.c

index fb97b7fd2ab63d42fb2221eb24598b8f77d6e7b6..530e5d2ce9fa6719a2bb6fda2a29663455320e48 100644 (file)
@@ -255,7 +255,7 @@ virCgroupV2ParseControllersFile(virCgroupPtr group,
     char **tmp;
 
     if (parent) {
-        contFile = g_strdup_printf("%s%s/cgroup.subtree_control",
+        contFile = g_strdup_printf("%s%s/cgroup.controllers",
                                    parent->unified.mountPoint,
                                    NULLSTR_EMPTY(parent->unified.placement));
     } else {