|
@@ -935,6 +935,16 @@ 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;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * If we don't have enough swap space, reclaiming of
|
|
|
+ * anon page which don't already have a swap slot is
|
|
|
+ * pointless.
|
|
|
+ */
|
|
|
+ if (nr_swap_pages <= 0 && PageAnon(cursor_page) &&
|
|
|
+ !PageSwapCache(cursor_page))
|
|
|
+ continue;
|
|
|
+
|
|
|
if (__isolate_lru_page(cursor_page, mode, file) == 0) {
|
|
|
list_move(&cursor_page->lru, dst);
|
|
|
mem_cgroup_del_lru(cursor_page);
|