It appears that numa_get_mems_allowed()
does not use the MPOL_F_MEMS_ALLOWED flag.  The return value I receive
when calling this function is an empty nodemask.  I've put together a
hack that uses MPOL_F_MEMS_ALLOWED, and I get the correct nodemask.

Michael Spiegel <michael.m.spiegel@gmail.com>

----


---
 libnuma.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Index: numactl-dev/libnuma.c
===================================================================
--- numactl-dev.orig/libnuma.c
+++ numactl-dev/libnuma.c
@@ -1136,7 +1136,9 @@ struct bitmask *numa_get_mems_allowed(vo
 	 * can change, so query on each call.
 	 */
 	bmp = numa_allocate_nodemask();
-	getpol(NULL,  bmp);
+	if (get_mempolicy(NULL, bmp->maskp, bmp->size + 1, 0,
+				MPOL_F_MEMS_ALLOWED) < 0)
+		numa_error("get_mempolicy");
 	return bmp;
 }
 make_internal_alias(numa_get_mems_allowed);
