From: dzogin Date: Tue, 7 Jul 2009 04:21:21 +0000 (+0000) Subject: Use GFP_HIGHUSER for OST allocations unless the client is\n X-Git-Tag: 1.8.1~39 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=34b0eb99cf2345adec0ba81b16f21937b1bc1d59;p=fs%2Flustre-release.git Use GFP_HIGHUSER for OST allocations unless the client is\n writing locally, so that the OST threads generate memory\npressure and allow inactive pages to be reclaimed. --- diff --git a/lustre/obdfilter/filter_io.c b/lustre/obdfilter/filter_io.c index 76dc70a..56ecb74 100644 --- a/lustre/obdfilter/filter_io.c +++ b/lustre/obdfilter/filter_io.c @@ -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);