Blame SOURCES/libvirt-util-vircgroupv2-don-t-error-out-if-enabling-controller-fails.patch

Pablo Greco 40546a
From 02b2342b6b5e45e3f41cb145521f53118ba8430f Mon Sep 17 00:00:00 2001
Pablo Greco 40546a
Message-Id: <02b2342b6b5e45e3f41cb145521f53118ba8430f@dist-git>
Pablo Greco 40546a
From: Pavel Hrdina <phrdina@redhat.com>
Pablo Greco 40546a
Date: Mon, 1 Jul 2019 17:08:21 +0200
Pablo Greco 40546a
Subject: [PATCH] util: vircgroupv2: don't error out if enabling controller
Pablo Greco 40546a
 fails
Pablo Greco 40546a
MIME-Version: 1.0
Pablo Greco 40546a
Content-Type: text/plain; charset=UTF-8
Pablo Greco 40546a
Content-Transfer-Encoding: 8bit
Pablo Greco 40546a
Pablo Greco 40546a
Currently CPU controller cannot be enabled if there is any real-time
Pablo Greco 40546a
task running and is assigned to non-root cgroup which is the case on
Pablo Greco 40546a
several distributions with graphical environment.
Pablo Greco 40546a
Pablo Greco 40546a
Instead of erroring out treat it as the controller is not available.
Pablo Greco 40546a
Pablo Greco 40546a
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Pablo Greco 40546a
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Pablo Greco 40546a
(cherry picked from commit 1d49cdcd116186e079db5668893da17f56141652)
Pablo Greco 40546a
Pablo Greco 40546a
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1689297
Pablo Greco 40546a
Pablo Greco 40546a
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Pablo Greco 40546a
Message-Id: <4a10dec59ca8cf5a2f81acf70d43f48b0a3bfd82.1561993100.git.phrdina@redhat.com>
Pablo Greco 40546a
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Pablo Greco 40546a
---
Pablo Greco 40546a
 src/util/vircgroupv2.c | 13 ++++++++++++-
Pablo Greco 40546a
 1 file changed, 12 insertions(+), 1 deletion(-)
Pablo Greco 40546a
Pablo Greco 40546a
diff --git a/src/util/vircgroupv2.c b/src/util/vircgroupv2.c
Pablo Greco 40546a
index a67d5cfe04..e1ab1849ba 100644
Pablo Greco 40546a
--- a/src/util/vircgroupv2.c
Pablo Greco 40546a
+++ b/src/util/vircgroupv2.c
Pablo Greco 40546a
@@ -437,6 +437,8 @@ virCgroupV2MakeGroup(virCgroupPtr parent ATTRIBUTE_UNUSED,
Pablo Greco 40546a
         } else {
Pablo Greco 40546a
             size_t i;
Pablo Greco 40546a
             for (i = 0; i < VIR_CGROUP_CONTROLLER_LAST; i++) {
Pablo Greco 40546a
+                int rc;
Pablo Greco 40546a
+
Pablo Greco 40546a
                 if (!virCgroupV2HasController(parent, i))
Pablo Greco 40546a
                     continue;
Pablo Greco 40546a
 
Pablo Greco 40546a
@@ -444,8 +446,17 @@ virCgroupV2MakeGroup(virCgroupPtr parent ATTRIBUTE_UNUSED,
Pablo Greco 40546a
                 if (i == VIR_CGROUP_CONTROLLER_CPUACCT)
Pablo Greco 40546a
                     continue;
Pablo Greco 40546a
 
Pablo Greco 40546a
-                if (virCgroupV2EnableController(parent, i, true) < 0)
Pablo Greco 40546a
+                rc = virCgroupV2EnableController(parent, i, false);
Pablo Greco 40546a
+                if (rc < 0) {
Pablo Greco 40546a
+                    if (rc == -2) {
Pablo Greco 40546a
+                        virResetLastError();
Pablo Greco 40546a
+                        VIR_DEBUG("failed to enable '%s' controller, skipping",
Pablo Greco 40546a
+                                  virCgroupV2ControllerTypeToString(i));
Pablo Greco 40546a
+                        group->unified.controllers &= ~(1 << i);
Pablo Greco 40546a
+                        continue;
Pablo Greco 40546a
+                    }
Pablo Greco 40546a
                     return -1;
Pablo Greco 40546a
+                }
Pablo Greco 40546a
             }
Pablo Greco 40546a
         }
Pablo Greco 40546a
     }
Pablo Greco 40546a
-- 
Pablo Greco 40546a
2.22.0
Pablo Greco 40546a