All functions from libnuma must be protected with ifdefs. Avoid this by
using our own wrapper.
---
src/libvirt_private.syms | 1 +
src/nodeinfo.c | 13 +++++--------
src/util/virnuma.c | 14 ++++++++++++++
src/util/virnuma.h | 2 ++
4 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 84c1c28..48d3da7 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1520,6 +1520,7 @@ virNodeSuspendGetTargetMask;
virDomainNumatuneMemModeTypeFromString;
virDomainNumatuneMemModeTypeToString;
virNumaGetAutoPlacementAdvice;
+virNumaIsAvailable;
virNumaSetupMemoryPolicy;
virNumaTuneMemPlacementModeTypeFromString;
virNumaTuneMemPlacementModeTypeToString;
diff --git a/src/nodeinfo.c b/src/nodeinfo.c
index 232b465..d4bb792 100644
--- a/src/nodeinfo.c
+++ b/src/nodeinfo.c
@@ -55,6 +55,7 @@
#include "virfile.h"
#include "virtypedparam.h"
#include "virstring.h"
+#include "virnuma.h"
#define VIR_FROM_THIS VIR_FROM_NONE
@@ -977,15 +978,11 @@ int nodeGetMemoryStats(int cellNum ATTRIBUTE_UNUSED,
if (VIR_STRDUP(meminfo_path, MEMINFO_PATH) < 0)
return -1;
} else {
-# if WITH_NUMACTL
- if (numa_available() < 0) {
-# endif
+ if (!virNumaIsAvailable()) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("NUMA not supported on this
host"));
return -1;
-# if WITH_NUMACTL
}
-# endif
# if WITH_NUMACTL
if (cellNum > numa_max_node()) {
@@ -1600,7 +1597,7 @@ nodeCapsInitNUMA(virCapsPtr caps)
int ncpus = 0;
bool topology_failed = false;
- if (numa_available() < 0)
+ if (!virNumaIsAvailable())
return nodeCapsInitNUMAFake(caps);
int mask_n_bytes = max_n_cpus / 8;
@@ -1672,7 +1669,7 @@ nodeGetCellsFreeMemory(unsigned long long *freeMems,
int ret = -1;
int maxCell;
- if (numa_available() < 0)
+ if (!virNumaIsAvailable())
return nodeGetCellsFreeMemoryFake(freeMems,
startCell, maxCells);
@@ -1706,7 +1703,7 @@ nodeGetFreeMemory(void)
unsigned long long freeMem = 0;
int n;
- if (numa_available() < 0)
+ if (!virNumaIsAvailable())
return nodeGetFreeMemoryFake();
diff --git a/src/util/virnuma.c b/src/util/virnuma.c
index ecf7ede..11078a1 100644
--- a/src/util/virnuma.c
+++ b/src/util/virnuma.c
@@ -167,6 +167,13 @@ virNumaSetupMemoryPolicy(virNumaTuneDef numatune,
cleanup:
return ret;
}
+
+
+bool
+virNumaIsAvailable(void)
+{
+ return numa_available() != -1;
+}
#else
int
virNumaSetupMemoryPolicy(virNumaTuneDef numatune,
@@ -181,4 +188,11 @@ virNumaSetupMemoryPolicy(virNumaTuneDef numatune,
return 0;
}
+
+
+bool
+virNumaIsAvailable(void)
+{
+ return false;
+}
#endif
diff --git a/src/util/virnuma.h b/src/util/virnuma.h
index 9ff8e69..5f9c38b 100644
--- a/src/util/virnuma.h
+++ b/src/util/virnuma.h
@@ -55,4 +55,6 @@ char *virNumaGetAutoPlacementAdvice(unsigned short vcups,
int virNumaSetupMemoryPolicy(virNumaTuneDef numatune,
virBitmapPtr nodemask);
+
+bool virNumaIsAvailable(void);
#endif /* __VIR_NUMA_H__ */
--
1.8.3.2