[PATCH] Add node to zone for the NUMA case. Add the node in order to optimize zone_to_nid. Signed-off-by: Christoph Lameter Index: linux-2.6.18-rc6-mm2/include/linux/mmzone.h =================================================================== --- linux-2.6.18-rc6-mm2.orig/include/linux/mmzone.h 2006-09-18 13:27:53.240373174 -0500 +++ linux-2.6.18-rc6-mm2/include/linux/mmzone.h 2006-09-18 14:09:30.709321073 -0500 @@ -168,6 +168,7 @@ struct zone { unsigned long lowmem_reserve[MAX_NR_ZONES]; #ifdef CONFIG_NUMA + int node; /* * zone reclaim becomes active if more unmapped pages exist. */ Index: linux-2.6.18-rc6-mm2/mm/page_alloc.c =================================================================== --- linux-2.6.18-rc6-mm2.orig/mm/page_alloc.c 2006-09-18 14:09:27.380918785 -0500 +++ linux-2.6.18-rc6-mm2/mm/page_alloc.c 2006-09-18 14:09:30.737643745 -0500 @@ -2498,6 +2498,7 @@ static void __meminit free_area_init_cor zone->spanned_pages = size; zone->present_pages = realsize; #ifdef CONFIG_NUMA + zone->node = nid; zone->min_unmapped_pages = (realsize*sysctl_min_unmapped_ratio) / 100; zone->min_slab_pages = (realsize * sysctl_min_slab_ratio) / 100; Index: linux-2.6.18-rc6-mm2/include/linux/mm.h =================================================================== --- linux-2.6.18-rc6-mm2.orig/include/linux/mm.h 2006-09-18 14:08:15.652287517 -0500 +++ linux-2.6.18-rc6-mm2/include/linux/mm.h 2006-09-18 14:09:30.757176622 -0500 @@ -446,7 +446,7 @@ static inline struct zone *page_zone(str static inline unsigned long zone_to_nid(struct zone *zone) { - return zone->zone_pgdat->node_id; + return zone->node; } static inline unsigned long page_to_nid(struct page *page)