Browse Source

Fix: find_or_create_page skips cpuset memory spreading.

We call alloc_page where we should be calling __page_cache_alloc.

__page_cache_alloc performs cpuset memory spreading.  alloc_page does not.
There is no reason that pages allocated via find_or_create should be
exempt.

Signed-off-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Christoph Lameter 18 years ago
parent
commit
43c0f3d25c
1 changed files with 2 additions and 1 deletions
  1. 2 1
      mm/filemap.c

+ 2 - 1
mm/filemap.c

@@ -670,7 +670,8 @@ repeat:
 	page = find_lock_page(mapping, index);
 	page = find_lock_page(mapping, index);
 	if (!page) {
 	if (!page) {
 		if (!cached_page) {
 		if (!cached_page) {
-			cached_page = alloc_page(gfp_mask);
+			cached_page =
+				__page_cache_alloc(gfp_mask);
 			if (!cached_page)
 			if (!cached_page)
 				return NULL;
 				return NULL;
 		}
 		}