|
@@ -1051,7 +1051,7 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan,
|
|
|
|
|
|
/* Check that we have not crossed a zone boundary. */
|
|
|
if (unlikely(page_zone_id(cursor_page) != zone_id))
|
|
|
- continue;
|
|
|
+ break;
|
|
|
|
|
|
/*
|
|
|
* If we don't have enough swap space, reclaiming of
|
|
@@ -1059,8 +1059,8 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan,
|
|
|
* pointless.
|
|
|
*/
|
|
|
if (nr_swap_pages <= 0 && PageAnon(cursor_page) &&
|
|
|
- !PageSwapCache(cursor_page))
|
|
|
- continue;
|
|
|
+ !PageSwapCache(cursor_page))
|
|
|
+ break;
|
|
|
|
|
|
if (__isolate_lru_page(cursor_page, mode, file) == 0) {
|
|
|
list_move(&cursor_page->lru, dst);
|
|
@@ -1071,11 +1071,16 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan,
|
|
|
nr_lumpy_dirty++;
|
|
|
scan++;
|
|
|
} else {
|
|
|
- if (mode == ISOLATE_BOTH &&
|
|
|
- page_count(cursor_page))
|
|
|
- nr_lumpy_failed++;
|
|
|
+ /* the page is freed already. */
|
|
|
+ if (!page_count(cursor_page))
|
|
|
+ continue;
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /* If we break out of the loop above, lumpy reclaim failed */
|
|
|
+ if (pfn < end_pfn)
|
|
|
+ nr_lumpy_failed++;
|
|
|
}
|
|
|
|
|
|
*scanned = scan;
|