Currently CPU controller cannot be enabled if there is any real-time
task running and is assigned to non-root cgroup which is the case on
several distributions with graphical environment.
Instead of erroring out treat it as the controller is not available.
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
} else {
size_t i;
for (i = 0; i < VIR_CGROUP_CONTROLLER_LAST; i++) {
+ int rc;
+
if (!virCgroupV2HasController(parent, i))
continue;
if (i == VIR_CGROUP_CONTROLLER_CPUACCT)
continue;
- if (virCgroupV2EnableController(parent, i, true) < 0)
+ rc = virCgroupV2EnableController(parent, i, false);
+ if (rc < 0) {
+ if (rc == -2) {
+ virResetLastError();
+ VIR_DEBUG("failed to enable '%s' controller, skipping",
+ virCgroupV2ControllerTypeToString(i));
+ group->unified.controllers &= ~(1 << i);
+ continue;
+ }
return -1;
+ }
}
}
}