diff options
Diffstat (limited to 'mm/page_alloc.c')
| -rw-r--r-- | mm/page_alloc.c | 7 | 
1 files changed, 3 insertions, 4 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index bf720550b44..2bc2ac63f41 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1769,7 +1769,7 @@ gfp_to_alloc_flags(gfp_t gfp_mask)  		 * See also cpuset_zone_allowed() comment in kernel/cpuset.c.  		 */  		alloc_flags &= ~ALLOC_CPUSET; -	} else if (unlikely(rt_task(p))) +	} else if (unlikely(rt_task(p)) && !in_interrupt())  		alloc_flags |= ALLOC_HARDER;  	if (likely(!(gfp_mask & __GFP_NOMEMALLOC))) { @@ -1817,9 +1817,9 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,  	if (NUMA_BUILD && (gfp_mask & GFP_THISNODE) == GFP_THISNODE)  		goto nopage; +restart:  	wake_all_kswapd(order, zonelist, high_zoneidx); -restart:  	/*  	 * OK, we're below the kswapd watermark and have kicked background  	 * reclaim. Now things get more complex, so set up alloc_flags according @@ -2183,7 +2183,7 @@ void show_free_areas(void)  	printk("active_anon:%lu inactive_anon:%lu isolated_anon:%lu\n"  		" active_file:%lu inactive_file:%lu isolated_file:%lu\n"  		" unevictable:%lu" -		" dirty:%lu writeback:%lu unstable:%lu buffer:%lu\n" +		" dirty:%lu writeback:%lu unstable:%lu\n"  		" free:%lu slab_reclaimable:%lu slab_unreclaimable:%lu\n"  		" mapped:%lu shmem:%lu pagetables:%lu bounce:%lu\n",  		global_page_state(NR_ACTIVE_ANON), @@ -2196,7 +2196,6 @@ void show_free_areas(void)  		global_page_state(NR_FILE_DIRTY),  		global_page_state(NR_WRITEBACK),  		global_page_state(NR_UNSTABLE_NFS), -		nr_blockdev_pages(),  		global_page_state(NR_FREE_PAGES),  		global_page_state(NR_SLAB_RECLAIMABLE),  		global_page_state(NR_SLAB_UNRECLAIMABLE),  |