diff options
Diffstat (limited to 'mm/vmscan.c')
-rw-r--r-- | mm/vmscan.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index beb35778c69f..eea668d9cff6 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -48,6 +48,7 @@ | |||
48 | #include <asm/div64.h> | 48 | #include <asm/div64.h> |
49 | 49 | ||
50 | #include <linux/swapops.h> | 50 | #include <linux/swapops.h> |
51 | #include <linux/balloon_compaction.h> | ||
51 | 52 | ||
52 | #include "internal.h" | 53 | #include "internal.h" |
53 | 54 | ||
@@ -210,6 +211,7 @@ void unregister_shrinker(struct shrinker *shrinker) | |||
210 | down_write(&shrinker_rwsem); | 211 | down_write(&shrinker_rwsem); |
211 | list_del(&shrinker->list); | 212 | list_del(&shrinker->list); |
212 | up_write(&shrinker_rwsem); | 213 | up_write(&shrinker_rwsem); |
214 | kfree(shrinker->nr_deferred); | ||
213 | } | 215 | } |
214 | EXPORT_SYMBOL(unregister_shrinker); | 216 | EXPORT_SYMBOL(unregister_shrinker); |
215 | 217 | ||
@@ -1113,7 +1115,8 @@ unsigned long reclaim_clean_pages_from_list(struct zone *zone, | |||
1113 | LIST_HEAD(clean_pages); | 1115 | LIST_HEAD(clean_pages); |
1114 | 1116 | ||
1115 | list_for_each_entry_safe(page, next, page_list, lru) { | 1117 | list_for_each_entry_safe(page, next, page_list, lru) { |
1116 | if (page_is_file_cache(page) && !PageDirty(page)) { | 1118 | if (page_is_file_cache(page) && !PageDirty(page) && |
1119 | !isolated_balloon_page(page)) { | ||
1117 | ClearPageActive(page); | 1120 | ClearPageActive(page); |
1118 | list_move(&page->lru, &clean_pages); | 1121 | list_move(&page->lru, &clean_pages); |
1119 | } | 1122 | } |