render / rpms / libvirt

Forked from rpms/libvirt 7 months ago
Clone
Pablo Greco 40546a
From 094b38a5c13a27f2f48897bd8cf811741a754db7 Mon Sep 17 00:00:00 2001
Pablo Greco 40546a
Message-Id: <094b38a5c13a27f2f48897bd8cf811741a754db7@dist-git>
Pablo Greco 40546a
From: Pavel Hrdina <phrdina@redhat.com>
Pablo Greco 40546a
Date: Mon, 1 Jul 2019 17:06:19 +0200
Pablo Greco 40546a
Subject: [PATCH] vircgrouptest: call virCgroupDetectMounts directly
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
Because we can set which files to return for cgroup tests there
Pablo Greco 40546a
is no need to have special function tailored to run tests.
Pablo Greco 40546a
Pablo Greco 40546a
Reviewed-by: Fabiano Fidêncio <fidencio@redhat.com>
Pablo Greco 40546a
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Pablo Greco 40546a
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Pablo Greco 40546a
(cherry picked from commit 4988f4b347d3c56af4bdb9852d1461f08f6cfced)
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: <5b3185e7dd49ac4d9a56532e6d77ad1aa098db95.1561993099.git.phrdina@redhat.com>
Pablo Greco 40546a
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Pablo Greco 40546a
---
Pablo Greco 40546a
 src/libvirt_private.syms |  2 +-
Pablo Greco 40546a
 src/util/vircgroup.c     | 21 +++++----------------
Pablo Greco 40546a
 src/util/vircgrouppriv.h |  4 +---
Pablo Greco 40546a
 tests/vircgrouptest.c    | 16 ++++++++--------
Pablo Greco 40546a
 4 files changed, 15 insertions(+), 28 deletions(-)
Pablo Greco 40546a
Pablo Greco 40546a
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
Pablo Greco 40546a
index f8c1a0df16..b66beb7f91 100644
Pablo Greco 40546a
--- a/src/libvirt_private.syms
Pablo Greco 40546a
+++ b/src/libvirt_private.syms
Pablo Greco 40546a
@@ -1528,7 +1528,7 @@ virCgroupDelThread;
Pablo Greco 40546a
 virCgroupDenyAllDevices;
Pablo Greco 40546a
 virCgroupDenyDevice;
Pablo Greco 40546a
 virCgroupDenyDevicePath;
Pablo Greco 40546a
-virCgroupDetectMountsFromFile;
Pablo Greco 40546a
+virCgroupDetectMounts;
Pablo Greco 40546a
 virCgroupFree;
Pablo Greco 40546a
 virCgroupGetBlkioDeviceReadBps;
Pablo Greco 40546a
 virCgroupGetBlkioDeviceReadIops;
Pablo Greco 40546a
diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
Pablo Greco 40546a
index f08fe3600e..53f5faafd2 100644
Pablo Greco 40546a
--- a/src/util/vircgroup.c
Pablo Greco 40546a
+++ b/src/util/vircgroup.c
Pablo Greco 40546a
@@ -430,9 +430,7 @@ virCgroupMountOptsMatchController(const char *mntOpts,
Pablo Greco 40546a
  * mounted and where
Pablo Greco 40546a
  */
Pablo Greco 40546a
 int
Pablo Greco 40546a
-virCgroupDetectMountsFromFile(virCgroupPtr group,
Pablo Greco 40546a
-                              const char *path,
Pablo Greco 40546a
-                              bool checkLinks)
Pablo Greco 40546a
+virCgroupDetectMounts(virCgroupPtr group)
Pablo Greco 40546a
 {
Pablo Greco 40546a
     size_t i;
Pablo Greco 40546a
     FILE *mounts = NULL;
Pablo Greco 40546a
@@ -440,9 +438,9 @@ virCgroupDetectMountsFromFile(virCgroupPtr group,
Pablo Greco 40546a
     char buf[CGROUP_MAX_VAL];
Pablo Greco 40546a
     int ret = -1;
Pablo Greco 40546a
 
Pablo Greco 40546a
-    mounts = fopen(path, "r");
Pablo Greco 40546a
+    mounts = fopen("/proc/mounts", "r");
Pablo Greco 40546a
     if (mounts == NULL) {
Pablo Greco 40546a
-        virReportSystemError(errno, _("Unable to open %s"), path);
Pablo Greco 40546a
+        virReportSystemError(errno, "%s", _("Unable to open /proc/mounts"));
Pablo Greco 40546a
         return -1;
Pablo Greco 40546a
     }
Pablo Greco 40546a
 
Pablo Greco 40546a
@@ -470,8 +468,7 @@ virCgroupDetectMountsFromFile(virCgroupPtr group,
Pablo Greco 40546a
 
Pablo Greco 40546a
                 /* If it is a co-mount it has a filename like "cpu,cpuacct"
Pablo Greco 40546a
                  * and we must identify the symlink path */
Pablo Greco 40546a
-                if (checkLinks &&
Pablo Greco 40546a
-                    virCgroupResolveMountLink(entry.mnt_dir, typestr,
Pablo Greco 40546a
+                if (virCgroupResolveMountLink(entry.mnt_dir, typestr,
Pablo Greco 40546a
                                               controller) < 0) {
Pablo Greco 40546a
                     goto cleanup;
Pablo Greco 40546a
                 }
Pablo Greco 40546a
@@ -485,12 +482,6 @@ virCgroupDetectMountsFromFile(virCgroupPtr group,
Pablo Greco 40546a
     return ret;
Pablo Greco 40546a
 }
Pablo Greco 40546a
 
Pablo Greco 40546a
-static int
Pablo Greco 40546a
-virCgroupDetectMounts(virCgroupPtr group)
Pablo Greco 40546a
-{
Pablo Greco 40546a
-    return virCgroupDetectMountsFromFile(group, "/proc/mounts", true);
Pablo Greco 40546a
-}
Pablo Greco 40546a
-
Pablo Greco 40546a
 
Pablo Greco 40546a
 static int
Pablo Greco 40546a
 virCgroupCopyPlacement(virCgroupPtr group,
Pablo Greco 40546a
@@ -4090,9 +4081,7 @@ virCgroupAvailable(void)
Pablo Greco 40546a
 
Pablo Greco 40546a
 
Pablo Greco 40546a
 int
Pablo Greco 40546a
-virCgroupDetectMountsFromFile(virCgroupPtr group ATTRIBUTE_UNUSED,
Pablo Greco 40546a
-                              const char *path ATTRIBUTE_UNUSED,
Pablo Greco 40546a
-                              bool checkLinks ATTRIBUTE_UNUSED)
Pablo Greco 40546a
+virCgroupDetectMounts(virCgroupPtr group ATTRIBUTE_UNUSED)
Pablo Greco 40546a
 {
Pablo Greco 40546a
     virReportSystemError(ENXIO, "%s",
Pablo Greco 40546a
                          _("Control groups not supported on this platform"));
Pablo Greco 40546a
diff --git a/src/util/vircgrouppriv.h b/src/util/vircgrouppriv.h
Pablo Greco 40546a
index a0034f3889..f78fe8bb9c 100644
Pablo Greco 40546a
--- a/src/util/vircgrouppriv.h
Pablo Greco 40546a
+++ b/src/util/vircgrouppriv.h
Pablo Greco 40546a
@@ -50,9 +50,7 @@ struct _virCgroup {
Pablo Greco 40546a
     virCgroupController controllers[VIR_CGROUP_CONTROLLER_LAST];
Pablo Greco 40546a
 };
Pablo Greco 40546a
 
Pablo Greco 40546a
-int virCgroupDetectMountsFromFile(virCgroupPtr group,
Pablo Greco 40546a
-                                  const char *path,
Pablo Greco 40546a
-                                  bool checkLinks);
Pablo Greco 40546a
+int virCgroupDetectMounts(virCgroupPtr group);
Pablo Greco 40546a
 
Pablo Greco 40546a
 int virCgroupNewPartition(const char *path,
Pablo Greco 40546a
                           bool create,
Pablo Greco 40546a
diff --git a/tests/vircgrouptest.c b/tests/vircgrouptest.c
Pablo Greco 40546a
index 7968903cad..6a38091a86 100644
Pablo Greco 40546a
--- a/tests/vircgrouptest.c
Pablo Greco 40546a
+++ b/tests/vircgrouptest.c
Pablo Greco 40546a
@@ -164,21 +164,21 @@ testCgroupDetectMounts(const void *args)
Pablo Greco 40546a
 {
Pablo Greco 40546a
     int result = -1;
Pablo Greco 40546a
     const char *file = args;
Pablo Greco 40546a
-    char *mounts = NULL;
Pablo Greco 40546a
     char *parsed = NULL;
Pablo Greco 40546a
     const char *actual;
Pablo Greco 40546a
     virCgroupPtr group = NULL;
Pablo Greco 40546a
     virBuffer buf = VIR_BUFFER_INITIALIZER;
Pablo Greco 40546a
     size_t i;
Pablo Greco 40546a
 
Pablo Greco 40546a
-    if (virAsprintf(&mounts, "%s/vircgroupdata/%s.mounts",
Pablo Greco 40546a
-                    abs_srcdir, file) < 0 ||
Pablo Greco 40546a
-        virAsprintf(&parsed, "%s/vircgroupdata/%s.parsed",
Pablo Greco 40546a
-                    abs_srcdir, file) < 0 ||
Pablo Greco 40546a
-        VIR_ALLOC(group) < 0)
Pablo Greco 40546a
+    setenv("VIR_CGROUP_MOCK_FILENAME", file, 1);
Pablo Greco 40546a
+
Pablo Greco 40546a
+    if (virAsprintf(&parsed, "%s/vircgroupdata/%s.parsed", abs_srcdir, file) < 0)
Pablo Greco 40546a
         goto cleanup;
Pablo Greco 40546a
 
Pablo Greco 40546a
-    if (virCgroupDetectMountsFromFile(group, mounts, false) < 0)
Pablo Greco 40546a
+    if (VIR_ALLOC(group) < 0)
Pablo Greco 40546a
+        goto cleanup;
Pablo Greco 40546a
+
Pablo Greco 40546a
+    if (virCgroupDetectMounts(group) < 0)
Pablo Greco 40546a
         goto cleanup;
Pablo Greco 40546a
 
Pablo Greco 40546a
     for (i = 0; i < VIR_CGROUP_CONTROLLER_LAST; i++) {
Pablo Greco 40546a
@@ -196,7 +196,7 @@ testCgroupDetectMounts(const void *args)
Pablo Greco 40546a
     result = 0;
Pablo Greco 40546a
 
Pablo Greco 40546a
  cleanup:
Pablo Greco 40546a
-    VIR_FREE(mounts);
Pablo Greco 40546a
+    unsetenv("VIR_CGROUP_MOCK_FILENAME");
Pablo Greco 40546a
     VIR_FREE(parsed);
Pablo Greco 40546a
     virCgroupFree(&group);
Pablo Greco 40546a
     virBufferFreeAndReset(&buf;;
Pablo Greco 40546a
-- 
Pablo Greco 40546a
2.22.0
Pablo Greco 40546a