Index: linux-2.6.15-rc3/include/linux/gfp.h =================================================================== --- linux-2.6.15-rc3.orig/include/linux/gfp.h 2005-11-28 19:51:27.000000000 -0800 +++ linux-2.6.15-rc3/include/linux/gfp.h 2005-11-30 18:43:44.000000000 -0800 @@ -48,7 +48,17 @@ struct vm_area_struct; #define __GFP_NOMEMALLOC ((__force gfp_t)0x10000u) /* Don't use emergency reserves */ #define __GFP_HARDWALL ((__force gfp_t)0x20000u) /* Enforce hardwall cpuset memory allocs */ -#define __GFP_BITS_SHIFT 20 /* Room for 20 __GFP_FOO bits */ +#define __GFP_TYPE_SHIFT 20 +#define __GFP_TYPE_WIDTH 3 +#define __GFP_TYPE_MASK ((__force gfp_t)((1 << __GFP_TYPE_SHIFT) - 1)) + +#define __GFP_TYPE(x) ((x) << __GFP_TYPE_SHIFT) + +#define __GFP_PAGECACHE __GFP_TYPE(0) +#define __GFP_SLAB __GFP_TYPE(1) +#define __GFP_PAGETABLE __GFP_TYPE(2) + +#define __GFP_BITS_SHIFT (__GFP_TYPE_SHIFT + __GFP_TYPE_WIDTH) #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1)) /* if you forget to add the bitmask here kernel will crash, period */ Index: linux-2.6.15-rc3/include/linux/mmzone.h =================================================================== --- linux-2.6.15-rc3.orig/include/linux/mmzone.h 2005-11-28 19:51:27.000000000 -0800 +++ linux-2.6.15-rc3/include/linux/mmzone.h 2005-11-30 19:02:39.000000000 -0800 @@ -54,6 +54,7 @@ struct per_cpu_pages { struct per_cpu_pageset { struct per_cpu_pages pcp[2]; /* 0: hot. 1: cold */ + int stats_diff[VM_STATS]; /* differential stats */ #ifdef CONFIG_NUMA unsigned long numa_hit; /* allocated in intended node */ unsigned long numa_miss; /* allocated in non intended node */ @@ -147,6 +148,7 @@ struct zone { unsigned long nr_scan_inactive; unsigned long nr_active; unsigned long nr_inactive; + unsigned long stats[VM_STATS]; unsigned long pages_scanned; /* since last reclaim */ int all_unreclaimable; /* All pages pinned */