[libvirt] [PATCH 2/4] numa: Introduce virNumaIsAvailable and use it instead of numa_available

Peter Krempa pkrempa at redhat.com
Thu Oct 17 16:46:01 UTC 2013


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




More information about the libvir-list mailing list