Fix: find_or_create_page skips cpuset memory spreading.
authorChristoph Lameter <[email protected]>
Wed, 16 May 2007 06:57:09 +0000 (23:57 -0700)
committerLinus Torvalds <[email protected]>
Thu, 17 May 2007 04:19:15 +0000 (21:19 -0700)
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 <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
mm/filemap.c

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