From 2b27d54de68a4581a9b46fe5c399b45c0014fcbd Mon Sep 17 00:00:00 2001 Message-Id: <2b27d54de68a4581a9b46fe5c399b45c0014fcbd@dist-git> From: Pavel Hrdina Date: Mon, 1 Jul 2019 17:07:10 +0200 Subject: [PATCH] vircgroupv1: fix build on non-linux OSes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cgroups are linux specific and we need to make sure that the code is compiled only on linux. On different OSes it fails the compilation: ../../src/util/vircgroupv1.c:65:19: error: variable has incomplete type 'struct mntent' struct mntent entry; ^ ../../src/util/vircgroupv1.c:65:12: note: forward declaration of 'struct mntent' struct mntent entry; ^ ../../src/util/vircgroupv1.c:74:12: error: implicit declaration of function 'getmntent_r' is invalid in C99 [-Werror,-Wimplicit-function-declaration] while (getmntent_r(mounts, &entry, buf, sizeof(buf)) != NULL) { ^ ../../src/util/vircgroupv1.c:814:39: error: use of undeclared identifier 'MS_NOSUID' if (mount("tmpfs", root, "tmpfs", MS_NOSUID|MS_NODEV|MS_NOEXEC, opts) < 0) { ^ ../../src/util/vircgroupv1.c:814:49: error: use of undeclared identifier 'MS_NODEV' if (mount("tmpfs", root, "tmpfs", MS_NOSUID|MS_NODEV|MS_NOEXEC, opts) < 0) { ^ ../../src/util/vircgroupv1.c:814:58: error: use of undeclared identifier 'MS_NOEXEC' if (mount("tmpfs", root, "tmpfs", MS_NOSUID|MS_NODEV|MS_NOEXEC, opts) < 0) { ^ ../../src/util/vircgroupv1.c:841:65: error: use of undeclared identifier 'MS_BIND' if (mount(src, group->legacy[i].mountPoint, "none", MS_BIND, ^ Reviewed-by: Ján Tomko Signed-off-by: Pavel Hrdina (cherry picked from commit 0615c8436ac868889454bee2781b6c9993518597) Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1689297 Signed-off-by: Pavel Hrdina Message-Id: Reviewed-by: Ján Tomko --- src/util/vircgroupv1.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/util/vircgroupv1.c b/src/util/vircgroupv1.c index 482615f3c8..97d108d3ac 100644 --- a/src/util/vircgroupv1.c +++ b/src/util/vircgroupv1.c @@ -20,13 +20,11 @@ */ #include -#if defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R +#ifdef __linux__ # include -#endif -#include -#if defined HAVE_SYS_MOUNT_H +# include # include -#endif +#endif /* __linux__ */ #include "internal.h" @@ -56,6 +54,8 @@ VIR_ENUM_IMPL(virCgroupV1Controller, VIR_CGROUP_CONTROLLER_LAST, "name=systemd"); +#ifdef __linux__ + /* We're looking for at least one 'cgroup' fs mount, * which is *not* a named mount. */ static bool @@ -2100,3 +2100,13 @@ virCgroupV1Register(void) { virCgroupBackendRegister(&virCgroupV1Backend); } + +#else /* !__linux__ */ + +void +virCgroupV1Register(void) +{ + VIR_INFO("Control groups not supported on this platform"); +} + +#endif /* !__linux__ */ -- 2.22.0