From: Mel Gorman Date: Thu, 13 Jan 2011 23:46:26 +0000 (-0800) Subject: mm: kswapd: use the classzone idx that kswapd was using for sleeping_prematurely() X-Git-Tag: v2.6.38-rc1~174 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dc83edd941f412e938841b4989be24aa288a1aa6;p=pandora-kernel.git mm: kswapd: use the classzone idx that kswapd was using for sleeping_prematurely() When kswapd is woken up for a high-order allocation, it takes account of the highest usable zone by the caller (the classzone idx). During allocation, this index is used to select the lowmem_reserve[] that should be applied to the watermark calculation in zone_watermark_ok(). When balancing a node, kswapd considers the highest unbalanced zone to be the classzone index. This will always be at least be the callers classzone_idx and can be higher. However, sleeping_prematurely() always considers the lowest zone (e.g. ZONE_DMA) to be the classzone index. This means that sleeping_prematurely() can consider a zone to be balanced that is unusable by the allocation request that originally woke kswapd. This patch changes sleeping_prematurely() to use a classzone_idx matching the value it used in balance_pgdat(). Signed-off-by: Mel Gorman Reviewed-by: Minchan Kim Reviewed-by: Eric B Munson Cc: KAMEZAWA Hiroyuki Cc: Simon Kirby Cc: KOSAKI Motohiro Cc: Shaohua Li Cc: Dave Hansen Cc: Johannes Weiner Cc: Rik van Riel Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- Reading git-diff-tree failed