From 1d49cdcd116186e079db5668893da17f56141652 Mon Sep 17 00:00:00 2001 From: Pavel Hrdina Date: Thu, 20 Jun 2019 13:10:20 +0200 Subject: [PATCH] util: vircgroupv2: don't error out if enabling controller fails 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 Reviewed-by: Peter Krempa --- src/util/vircgroupv2.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/util/vircgroupv2.c b/src/util/vircgroupv2.c index 032f78ac8e..3cf786b123 100644 --- a/src/util/vircgroupv2.c +++ b/src/util/vircgroupv2.c @@ -438,6 +438,8 @@ virCgroupV2MakeGroup(virCgroupPtr parent ATTRIBUTE_UNUSED, } else { size_t i; for (i = 0; i < VIR_CGROUP_CONTROLLER_LAST; i++) { + int rc; + if (!virCgroupV2HasController(parent, i)) continue; @@ -445,8 +447,17 @@ virCgroupV2MakeGroup(virCgroupPtr parent ATTRIBUTE_UNUSED, 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; + } } } } -- 2.47.2