diff options
author | Christoph Lameter <clameter@sgi.com> | 2006-09-26 02:31:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-26 11:48:50 -0400 |
commit | 9b819d204cf602eab1a53a9ec4b8d2ca51e02a1d (patch) | |
tree | 9442bf01a00a93a8ae54462fb4878588e1b2a6bf /mm/page_alloc.c | |
parent | 056c62418cc639bf2fe962c6a6ee56054b838bc7 (diff) |
[PATCH] Add __GFP_THISNODE to avoid fallback to other nodes and ignore cpuset/memory policy restrictions
Add a new gfp flag __GFP_THISNODE to avoid fallback to other nodes. This
flag is essential if a kernel component requires memory to be located on a
certain node. It will be needed for alloc_pages_node() to force allocation
on the indicated node and for alloc_pages() to force allocation on the
current node.
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Cc: Andy Whitcroft <apw@shadowen.org>
Cc: Mel Gorman <mel@csn.ul.ie>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 208a6b03aa78..ea498788af53 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -893,6 +893,9 @@ get_page_from_freelist(gfp_t gfp_mask, unsigned int order, | |||
893 | * See also cpuset_zone_allowed() comment in kernel/cpuset.c. | 893 | * See also cpuset_zone_allowed() comment in kernel/cpuset.c. |
894 | */ | 894 | */ |
895 | do { | 895 | do { |
896 | if (unlikely((gfp_mask & __GFP_THISNODE) && | ||
897 | (*z)->zone_pgdat != zonelist->zones[0]->zone_pgdat)) | ||
898 | break; | ||
896 | if ((alloc_flags & ALLOC_CPUSET) && | 899 | if ((alloc_flags & ALLOC_CPUSET) && |
897 | !cpuset_zone_allowed(*z, gfp_mask)) | 900 | !cpuset_zone_allowed(*z, gfp_mask)) |
898 | continue; | 901 | continue; |