diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/vmscan.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index cec8081bbd95..130ad0239f52 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -1051,7 +1051,7 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan, | |||
1051 | 1051 | ||
1052 | /* Check that we have not crossed a zone boundary. */ | 1052 | /* Check that we have not crossed a zone boundary. */ |
1053 | if (unlikely(page_zone_id(cursor_page) != zone_id)) | 1053 | if (unlikely(page_zone_id(cursor_page) != zone_id)) |
1054 | continue; | 1054 | break; |
1055 | 1055 | ||
1056 | /* | 1056 | /* |
1057 | * If we don't have enough swap space, reclaiming of | 1057 | * 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, | |||
1059 | * pointless. | 1059 | * pointless. |
1060 | */ | 1060 | */ |
1061 | if (nr_swap_pages <= 0 && PageAnon(cursor_page) && | 1061 | if (nr_swap_pages <= 0 && PageAnon(cursor_page) && |
1062 | !PageSwapCache(cursor_page)) | 1062 | !PageSwapCache(cursor_page)) |
1063 | continue; | 1063 | break; |
1064 | 1064 | ||
1065 | if (__isolate_lru_page(cursor_page, mode, file) == 0) { | 1065 | if (__isolate_lru_page(cursor_page, mode, file) == 0) { |
1066 | list_move(&cursor_page->lru, dst); | 1066 | list_move(&cursor_page->lru, dst); |
@@ -1071,11 +1071,16 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan, | |||
1071 | nr_lumpy_dirty++; | 1071 | nr_lumpy_dirty++; |
1072 | scan++; | 1072 | scan++; |
1073 | } else { | 1073 | } else { |
1074 | if (mode == ISOLATE_BOTH && | 1074 | /* the page is freed already. */ |
1075 | page_count(cursor_page)) | 1075 | if (!page_count(cursor_page)) |
1076 | nr_lumpy_failed++; | 1076 | continue; |
1077 | break; | ||
1077 | } | 1078 | } |
1078 | } | 1079 | } |
1080 | |||
1081 | /* If we break out of the loop above, lumpy reclaim failed */ | ||
1082 | if (pfn < end_pfn) | ||
1083 | nr_lumpy_failed++; | ||
1079 | } | 1084 | } |
1080 | 1085 | ||
1081 | *scanned = scan; | 1086 | *scanned = scan; |