From 5a9ef6e0c4d34c8d00a1746b7a5e600358ea4409 Mon Sep 17 00:00:00 2001 From: Minchan Kim Date: Mon, 21 Sep 2009 17:01:43 -0700 Subject: [PATCH] --- yaml --- r: 164392 b: refs/heads/master c: de2e7567c7ddf24f0ca80010163ed10da66a14e2 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/mm/vmscan.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index aac8868a9764..eaaaad6773f1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: adea02a1bea71a508da32c04d715485a1fe62029 +refs/heads/master: de2e7567c7ddf24f0ca80010163ed10da66a14e2 diff --git a/trunk/mm/vmscan.c b/trunk/mm/vmscan.c index 208071c48bf2..ece2ecb08102 100644 --- a/trunk/mm/vmscan.c +++ b/trunk/mm/vmscan.c @@ -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);