Re: [PATCH v2] vircgroupv1: add ifdef around cgroup code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Sep 26, 2018 at 02:42:51PM +0200, Pavel Hrdina wrote:
Cgroups are supported only on linux.


The commit message is sparse, doesn't mention neither the build fix
motivation, nor the other conditions for building the cgroup code.

Signed-off-by: Pavel Hrdina <phrdina@xxxxxxxxxx>
---

changed in v2:
   - define moved to vircgrouppriv.h
   - fixed alternative virCgroupV1Register function


As pointed out in my review of v1:
https://www.redhat.com/archives/libvir-list/2018-September/msg01313.html
the tests are only guarded by #ifdef __linux__

I just tried removing the VIR_CGROUP_SUPPORTED constant on v4.7.0
and the cgrouptest fails. So any unreasonable linux platform already has
the tests failing.

src/util/vircgroup.c     |  5 -----
src/util/vircgrouppriv.h |  8 ++++++++
src/util/vircgroupv1.c   | 13 +++++++++++++
3 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
index 23957c82c7..aae699db0e 100644
--- a/src/util/vircgroup.c
+++ b/src/util/vircgroup.c
@@ -66,11 +66,6 @@ VIR_LOG_INIT("util.cgroup");
#define CGROUP_NB_TOTAL_CPU_STAT_PARAM 3
#define CGROUP_NB_PER_CPU_STAT_PARAM   1

-#if defined(__linux__) && defined(HAVE_GETMNTENT_R) && \
-    defined(_DIRENT_HAVE_D_TYPE) && defined(_SC_CLK_TCK)
-# define VIR_CGROUP_SUPPORTED
-#endif

So this is just an overly verbose way of saying
#if defined(__linux__) with the other conditions being leftovers from
when we tried to build parts of the file on non-Linux.

-
VIR_ENUM_IMPL(virCgroupController, VIR_CGROUP_CONTROLLER_LAST,
              "cpu", "cpuacct", "cpuset", "memory", "devices",
              "freezer", "blkio", "net_cls", "perf_event",
diff --git a/src/util/vircgrouppriv.h b/src/util/vircgrouppriv.h
index c50a25f195..5a19f965c2 100644
--- a/src/util/vircgrouppriv.h
+++ b/src/util/vircgrouppriv.h
@@ -29,9 +29,17 @@
#ifndef __VIR_CGROUP_PRIV_H__
# define __VIR_CGROUP_PRIV_H__

+# include <dirent.h>
+# include <unistd.h>
+
# include "vircgroup.h"
# include "vircgroupbackend.h"

+# if defined(__linux__) && defined(HAVE_GETMNTENT_R) && \
+    defined(_DIRENT_HAVE_D_TYPE) && defined(_SC_CLK_TCK)
+#  define VIR_CGROUP_SUPPORTED
+# endif
+
struct _virCgroupV1Controller {
    int type;
    char *mountPoint;
diff --git a/src/util/vircgroupv1.c b/src/util/vircgroupv1.c
index 62a6e5c448..a00dd06148 100644
--- a/src/util/vircgroupv1.c
+++ b/src/util/vircgroupv1.c
@@ -55,6 +55,8 @@ VIR_ENUM_IMPL(virCgroupV1Controller, VIR_CGROUP_CONTROLLER_LAST,
              "name=systemd");


+#ifdef VIR_CGROUP_SUPPORTED

This can be just #ifdef __linux__
and we don't need to bother with the rest.

Jano

+
/* We're looking for at least one 'cgroup' fs mount,
 * which is *not* a named mount. */
static bool
@@ -2099,3 +2101,14 @@ virCgroupV1Register(void)
{
    virCgroupBackendRegister(&virCgroupV1Backend);
}
+
+#else /* !VIR_CGROUP_SUPPORTED */
+
+void
+virCgroupV1Register(void)
+{
+    virReportSystemError(ENOSYS, "%s",
+                         _("Control groups not supported on this platform"));
+}
+
+#endif /* !VIR_CGROUP_SUPPORTED */
--
2.17.1

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

Attachment: signature.asc
Description: Digital signature

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux