aboutsummaryrefslogtreecommitdiff
path: root/mm/swap.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/swap.c')
-rw-r--r--mm/swap.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/mm/swap.c b/mm/swap.c
index 1785ac603fb0..dddb373315fd 100644
--- a/mm/swap.c
+++ b/mm/swap.c
@@ -487,7 +487,7 @@ void rotate_reclaimable_page(struct page *page)
page_cache_get(page);
local_lock_irqsave(rotate_lock, flags);
pvec = this_cpu_ptr(&lru_rotate_pvecs);
- if (!pagevec_add(pvec, page))
+ if (!pagevec_add(pvec, page) || PageCompound(page))
pagevec_move_tail(pvec);
local_unlock_irqrestore(rotate_lock, flags);
}
@@ -544,7 +544,7 @@ void activate_page(struct page *page)
activate_page_pvecs);
page_cache_get(page);
- if (!pagevec_add(pvec, page))
+ if (!pagevec_add(pvec, page) || PageCompound(page))
pagevec_lru_move_fn(pvec, __activate_page, NULL);
put_locked_var(swapvec_lock, activate_page_pvecs);
}
@@ -636,7 +636,7 @@ static void __lru_cache_add(struct page *page)
struct pagevec *pvec = &get_locked_var(swapvec_lock, lru_add_pvec);
page_cache_get(page);
- if (!pagevec_space(pvec))
+ if (!pagevec_space(pvec) || PageCompound(page))
__pagevec_lru_add(pvec);
pagevec_add(pvec, page);
put_locked_var(swapvec_lock, lru_add_pvec);
@@ -852,7 +852,7 @@ void deactivate_file_page(struct page *page)
struct pagevec *pvec = &get_locked_var(swapvec_lock,
lru_deactivate_file_pvecs);
- if (!pagevec_add(pvec, page))
+ if (!pagevec_add(pvec, page) || PageCompound(page))
pagevec_lru_move_fn(pvec, lru_deactivate_file_fn, NULL);
put_locked_var(swapvec_lock, lru_deactivate_file_pvecs);
}