* daemon/Makefile.am: Fix missing sasl rule * src/datatypes.c: Add unistd.h to avoid gnulib bug * src/util/cgroup.c: Disable mntent if not available --- daemon/Makefile.am | 3 ++ src/datatypes.c | 1 + src/util/cgroup.c | 66 ++++++++++++++++++++++++++++++++++++++++++--------- 3 files changed, 58 insertions(+), 12 deletions(-) diff --git a/daemon/Makefile.am b/daemon/Makefile.am index 26347d6..84aab04 100644 --- a/daemon/Makefile.am +++ b/daemon/Makefile.am @@ -243,6 +243,9 @@ install-data-sasl: uninstall-data-sasl: rm -f $(DESTDIR)$(sysconfdir)/sasl2/libvirt.conf rmdir $(DESTDIR)$(sysconfdir)/sasl2/ +else +install-data-sasl: +uninstall-data-sasl: endif diff --git a/src/datatypes.c b/src/datatypes.c index 6741b9e..89ad309 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -20,6 +20,7 @@ */ #include <config.h> +#include <unistd.h> #include "datatypes.h" #include "virterror_internal.h" diff --git a/src/util/cgroup.c b/src/util/cgroup.c index 2e646fd..66297b9 100644 --- a/src/util/cgroup.c +++ b/src/util/cgroup.c @@ -13,7 +13,9 @@ #include <stdio.h> #include <stdint.h> #include <inttypes.h> +#ifdef HAVE_MNTENT_H #include <mntent.h> +#endif #include <fcntl.h> #include <string.h> #include <errno.h> @@ -68,7 +70,7 @@ void virCgroupFree(virCgroupPtr *group) VIR_FREE(*group); } - +#ifdef HAVE_MNTENT_H /* * Process /proc/mounts figuring out what controllers are * mounted and where @@ -233,6 +235,7 @@ static int virCgroupDetect(virCgroupPtr group) return rc; } +#endif static int virCgroupPathOfController(virCgroupPtr group, @@ -317,12 +320,12 @@ static int virCgroupGetValueStr(virCgroupPtr group, static int virCgroupSetValueU64(virCgroupPtr group, int controller, const char *key, - uint64_t value) + unsigned long long int value) { char *strval = NULL; int rc; - if (virAsprintf(&strval, "%" PRIu64, value) == -1) + if (virAsprintf(&strval, "%llu", value) == -1) return -ENOMEM; rc = virCgroupSetValueStr(group, controller, key, strval); @@ -339,12 +342,12 @@ static int virCgroupSetValueU64(virCgroupPtr group, static int virCgroupSetValueI64(virCgroupPtr group, int controller, const char *key, - int64_t value) + long long int value) { char *strval = NULL; int rc; - if (virAsprintf(&strval, "%" PRIi64, value) == -1) + if (virAsprintf(&strval, "%lld", value) == -1) return -ENOMEM; rc = virCgroupSetValueStr(group, controller, key, strval); @@ -357,7 +360,7 @@ static int virCgroupSetValueI64(virCgroupPtr group, static int virCgroupGetValueI64(virCgroupPtr group, int controller, const char *key, - int64_t *value) + long long int *value) { char *strval = NULL; int rc = 0; @@ -378,7 +381,7 @@ out: static int virCgroupGetValueU64(virCgroupPtr group, int controller, const char *key, - uint64_t *value) + unsigned long long int *value) { char *strval = NULL; int rc = 0; @@ -387,7 +390,7 @@ static int virCgroupGetValueU64(virCgroupPtr group, if (rc != 0) goto out; - if (sscanf(strval, "%" SCNu64, value) != 1) + if (virStrToLong_ull(strval, NULL, 10, value) < 0) rc = -EINVAL; out: VIR_FREE(strval); @@ -396,6 +399,7 @@ out: } +#ifdef HAVE_MNTENT_H static int virCgroupCpuSetInherit(virCgroupPtr parent, virCgroupPtr group) { int i; @@ -546,7 +550,7 @@ cleanup: virCgroupFree(&rootgrp); return rc; } - +#endif /** * virCgroupRemove: @@ -617,6 +621,7 @@ int virCgroupAddTask(virCgroupPtr group, pid_t pid) * * Returns 0 on success */ +#ifdef HAVE_MNTENT_H int virCgroupForDriver(const char *name, virCgroupPtr *group, int privileged, @@ -650,6 +655,16 @@ out: return rc; } +#else +int virCgroupForDriver(const char *name ATTRIBUTE_UNUSED, + virCgroupPtr *group ATTRIBUTE_UNUSED, + int privileged ATTRIBUTE_UNUSED, + int create ATTRIBUTE_UNUSED) +{ + /* Claim no support */ + return -ENXIO; +} +#endif /** @@ -661,6 +676,7 @@ out: * * Returns 0 on success */ +#ifdef HAVE_MNTENT_H int virCgroupForDomain(virCgroupPtr driver, const char *name, virCgroupPtr *group, @@ -684,6 +700,15 @@ int virCgroupForDomain(virCgroupPtr driver, return rc; } +#else +int virCgroupForDomain(virCgroupPtr driver ATTRIBUTE_UNUSED, + const char *name ATTRIBUTE_UNUSED, + virCgroupPtr *group ATTRIBUTE_UNUSED, + int create ATTRIBUTE_UNUSED) +{ + return -ENXIO; +} +#endif /** * virCgroupSetMemory: @@ -786,6 +811,7 @@ int virCgroupAllowDeviceMajor(virCgroupPtr group, char type, int major) * * Returns: 0 on success */ +#if defined(major) && defined(minor) int virCgroupAllowDevicePath(virCgroupPtr group, const char *path) { struct stat sb; @@ -801,6 +827,14 @@ int virCgroupAllowDevicePath(virCgroupPtr group, const char *path) major(sb.st_rdev), minor(sb.st_rdev)); } +#else +int virCgroupAllowDevicePath(virCgroupPtr group ATTRIBUTE_UNUSED, + const char *path ATTRIBUTE_UNUSED) +{ + return -ENOSYS; +} +#endif + /** * virCgroupDenyDevice: @@ -861,6 +895,7 @@ int virCgroupDenyDeviceMajor(virCgroupPtr group, char type, int major) return rc; } +#if defined(major) && defined(minor) int virCgroupDenyDevicePath(virCgroupPtr group, const char *path) { struct stat sb; @@ -876,26 +911,33 @@ int virCgroupDenyDevicePath(virCgroupPtr group, const char *path) major(sb.st_rdev), minor(sb.st_rdev)); } +#else +int virCgroupDenyDevicePath(virCgroupPtr group ATTRIBUTE_UNUSED, + const char *path ATTRIBUTE_UNUSED) +{ + return -ENOSYS; +} +#endif int virCgroupSetCpuShares(virCgroupPtr group, unsigned long long shares) { return virCgroupSetValueU64(group, VIR_CGROUP_CONTROLLER_CPU, - "cpu.shares", (uint64_t)shares); + "cpu.shares", shares); } int virCgroupGetCpuShares(virCgroupPtr group, unsigned long long *shares) { return virCgroupGetValueU64(group, VIR_CGROUP_CONTROLLER_CPU, - "cpu.shares", (uint64_t *)shares); + "cpu.shares", shares); } int virCgroupGetCpuacctUsage(virCgroupPtr group, unsigned long long *usage) { return virCgroupGetValueU64(group, VIR_CGROUP_CONTROLLER_CPUACCT, - "cpuacct.usage", (uint64_t *)usage); + "cpuacct.usage", usage); } int virCgroupSetFreezerState(virCgroupPtr group, const char *state) -- 1.6.2.5 -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list