mm: do_migrate_range: exit loop if not_managed is true

If not_managed is true all pages will be putback to lru, so break the loop
earlier to skip other pages isolate.

Signed-off-by: Bob Liu <lliubbo@gmail.com>
Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Acked-by: Wu Fengguang <fengguang.wu@intel.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Mel Gorman <mel@csn.ul.ie>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Bob Liu 2010-10-26 14:22:10 -07:00 committed by Linus Torvalds
parent f6a3607e5f
commit 809c444977
1 changed files with 6 additions and 4 deletions

View File

@ -696,15 +696,17 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
page_is_file_cache(page)); page_is_file_cache(page));
} else { } else {
/* Becasue we don't have big zone->lock. we should
check this again here. */
if (page_count(page))
not_managed++;
#ifdef CONFIG_DEBUG_VM #ifdef CONFIG_DEBUG_VM
printk(KERN_ALERT "removing pfn %lx from LRU failed\n", printk(KERN_ALERT "removing pfn %lx from LRU failed\n",
pfn); pfn);
dump_page(page); dump_page(page);
#endif #endif
/* Becasue we don't have big zone->lock. we should
check this again here. */
if (page_count(page)) {
not_managed++;
break;
}
} }
} }
ret = -EBUSY; ret = -EBUSY;