Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.26-rc1 /mm/mmzone.c

Filename:/mm/mmzone.c
Lines Added:30
Lines Deleted:0
Also changed in: (Previous) 2.6.25-git20  2.6.25-git19  2.6.25-git18  2.6.25-git17  2.6.25-git16  2.6.25-git15 
(Following) 2.6.26-rc2  2.6.26-rc3  2.6.26-rc4  2.6.26-rc5  2.6.26-rc6  2.6.26-rc7 

Location
[  2.6.26-rc1
  [  mm
     o  mmzone.c

Patch

diff --git a/mm/mmzone.c b/mm/mmzone.c
index eb58386..486ed59 100644
--- a/mm/mmzone.c
+++ b/mm/mmzone.c
@@ -42,3 +42,33 @@ struct zone *next_zone(struct zone *zone)
    return zone;
 }
 
+static inline int zref_in_nodemask(struct zoneref *zref, nodemask_t *nodes)
+{
+#ifdef CONFIG_NUMA
+   return node_isset(zonelist_node_idx(zref), *nodes);
+#else
+   return 1;
+#endif /* CONFIG_NUMA */
+}
+
+/* Returns the next zone at or below highest_zoneidx in a zonelist */
+struct zoneref *next_zones_zonelist(struct zoneref *z,
+               enum zone_type highest_zoneidx,
+               nodemask_t *nodes,
+               struct zone **zone)
+{
+   /*
+    * Find the next suitable zone to use for the allocation.
+    * Only filter based on nodemask if it's set
+    */
+   if (likely(nodes == NULL))
+      while (zonelist_zone_idx(z) > highest_zoneidx)
+         z++;
+   else
+      while (zonelist_zone_idx(z) > highest_zoneidx ||
+            (z->zone && !zref_in_nodemask(z, nodes)))
+         z++;
+
+   *zone = zonelist_zone(z++);
+   return z;
+}


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.