From: Pavel Hrdina Date: Thu, 20 Jun 2019 11:10:20 +0000 (+0200) Subject: util: vircgroupv2: don't error out if enabling controller fails X-Git-Tag: v5.5.0-rc1~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1d49cdcd116186e079db5668893da17f56141652;p=thirdparty%2Flibvirt.git 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 --- 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; + } } } }