Whamcloud - gitweb
Use GFP_HIGHUSER for OST allocations unless the client is\n
authordzogin <dzogin>
Tue, 7 Jul 2009 04:21:21 +0000 (04:21 +0000)
committerdzogin <dzogin>
Tue, 7 Jul 2009 04:21:21 +0000 (04:21 +0000)
writing locally, so that the OST threads generate memory\npressure and allow inactive pages to be reclaimed.

lustre/obdfilter/filter_io.c

index 76dc70a..56ecb74 100644 (file)
@@ -276,8 +276,13 @@ static struct page * filter_get_page(struct obd_device *obd,
 {
         struct page *page;
 
+        /* __GFP_NOMEMALLOC = don't use emergency reserves because it
+         * can cause atomic allocations to fail. See bug 19917.
+         * For local (same node) client, we should really be using
+         * GFP_NOFS | __GFP_HIGHMEM instead. This will be addressed
+         * by bug 19529 */
         page = find_or_create_page(inode->i_mapping, offset >> CFS_PAGE_SHIFT,
-                                   GFP_NOFS | __GFP_HIGHMEM);
+                                   GFP_HIGHUSER  | __GFP_NOMEMALLOC);
         if (unlikely(page == NULL))
                 lprocfs_counter_add(obd->obd_stats, LPROC_FILTER_NO_PAGE, 1);