vmscan: kswapd: don't retry balance_pgdat() if all zones are unreclaimable
Commit f50de2d3 (vmscan: have kswapd sleep for a short interval and double
check it should be asleep) can cause kswapd to enter an infinite loop if
running on a single-CPU system.  If all zones are unreclaimble,
sleeping_prematurely return 1 and kswapd will call balance_pgdat() again.
but it's totally meaningless, balance_pgdat() doesn't anything against
unreclaimable zone!
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Mel Gorman <mel@csn.ul.ie>
Reported-by: Will Newton <will.newton@gmail.com>
Reviewed-by: Minchan Kim <minchan.kim@gmail.com>
Reviewed-by: Rik van Riel <riel@redhat.com>
Tested-by: Will Newton <will.newton@gmail.com>
Reviewed-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
			
			
This commit is contained in:
		
							parent
							
								
									af2422c42c
								
							
						
					
					
						commit
						de3fab3934
					
				| @ -1922,6 +1922,9 @@ static int sleeping_prematurely(pg_data_t *pgdat, int order, long remaining) | ||||
| 		if (!populated_zone(zone)) | ||||
| 			continue; | ||||
| 
 | ||||
| 		if (zone_is_all_unreclaimable(zone)) | ||||
| 			continue; | ||||
| 
 | ||||
| 		if (!zone_watermark_ok(zone, order, high_wmark_pages(zone), | ||||
| 								0, 0)) | ||||
| 			return 1; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user