| From da175d06b437093f93109ba9e5efbe44dfdf9409 Mon Sep 17 00:00:00 2001 |
| From: Mel Gorman <mgorman@suse.de> |
| Date: Fri, 8 Jul 2011 15:39:39 -0700 |
| Subject: mm: vmscan: evaluate the watermarks against the correct classzone |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Mel Gorman <mgorman@suse.de> |
| |
| commit da175d06b437093f93109ba9e5efbe44dfdf9409 upstream. |
| |
| When deciding if kswapd is sleeping prematurely, the classzone is taken |
| into account but this is different to what balance_pgdat() and the |
| allocator are doing. Specifically, the DMA zone will be checked based on |
| the classzone used when waking kswapd which could be for a GFP_KERNEL or |
| GFP_HIGHMEM request. The lowmem reserve limit kicks in, the watermark is |
| not met and kswapd thinks it's sleeping prematurely keeping kswapd awake in |
| error. |
| |
| Signed-off-by: Mel Gorman <mgorman@suse.de> |
| Reported-by: Pádraig Brady <P@draigBrady.com> |
| Tested-by: Pádraig Brady <P@draigBrady.com> |
| Tested-by: Andrew Lutomirski <luto@mit.edu> |
| Acked-by: Rik van Riel <riel@redhat.com> |
| Reviewed-by: Minchan Kim <minchan.kim@gmail.com> |
| Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> |
| Cc: Johannes Weiner <hannes@cmpxchg.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| mm/vmscan.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/mm/vmscan.c |
| +++ b/mm/vmscan.c |
| @@ -2279,7 +2279,7 @@ static bool sleeping_prematurely(pg_data |
| } |
| |
| if (!zone_watermark_ok_safe(zone, order, high_wmark_pages(zone), |
| - classzone_idx, 0)) |
| + i, 0)) |
| all_zones_ok = false; |
| else |
| balanced += zone->present_pages; |