diff options
author | Christoph Lameter <clameter@sgi.com> | 2006-09-26 02:31:19 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-26 11:48:47 -0400 |
commit | 19655d3487001d7df0e10e9cbfc27c758b77c2b5 (patch) | |
tree | 8d0aaa216bd32bd64e3a9652fd34d40bdb9d1075 /include/linux/gfp.h | |
parent | 2f6726e54a9410e2e4cee864947c05e954051916 (diff) |
[PATCH] linearly index zone->node_zonelists[]
I wonder why we need this bitmask indexing into zone->node_zonelists[]?
We always start with the highest zone and then include all lower zones
if we build zonelists.
Are there really cases where we need allocation from ZONE_DMA or
ZONE_HIGHMEM but not ZONE_NORMAL? It seems that the current implementation
of highest_zone() makes that already impossible.
If we go linear on the index then gfp_zone() == highest_zone() and a lot
of definitions fall by the wayside.
We can now revert back to the use of gfp_zone() in mempolicy.c ;-)
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux/gfp.h')
-rw-r--r-- | include/linux/gfp.h | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/include/linux/gfp.h b/include/linux/gfp.h index a0992d392d79..63ab88a36f39 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h | |||
@@ -12,9 +12,6 @@ struct vm_area_struct; | |||
12 | * | 12 | * |
13 | * Zone modifiers (see linux/mmzone.h - low three bits) | 13 | * Zone modifiers (see linux/mmzone.h - low three bits) |
14 | * | 14 | * |
15 | * These may be masked by GFP_ZONEMASK to make allocations with this bit | ||
16 | * set fall back to ZONE_NORMAL. | ||
17 | * | ||
18 | * Do not put any conditional on these. If necessary modify the definitions | 15 | * Do not put any conditional on these. If necessary modify the definitions |
19 | * without the underscores and use the consistently. The definitions here may | 16 | * without the underscores and use the consistently. The definitions here may |
20 | * be used in bit comparisons. | 17 | * be used in bit comparisons. |
@@ -78,14 +75,7 @@ struct vm_area_struct; | |||
78 | #define GFP_DMA32 __GFP_DMA32 | 75 | #define GFP_DMA32 __GFP_DMA32 |
79 | 76 | ||
80 | 77 | ||
81 | static inline int gfp_zone(gfp_t gfp) | 78 | static inline enum zone_type gfp_zone(gfp_t flags) |
82 | { | ||
83 | int zone = GFP_ZONEMASK & (__force int) gfp; | ||
84 | BUG_ON(zone >= GFP_ZONETYPES); | ||
85 | return zone; | ||
86 | } | ||
87 | |||
88 | static inline enum zone_type highest_zone(gfp_t flags) | ||
89 | { | 79 | { |
90 | if (flags & __GFP_DMA) | 80 | if (flags & __GFP_DMA) |
91 | return ZONE_DMA; | 81 | return ZONE_DMA; |