diff options
Diffstat (limited to 'mm/swap.c')
-rw-r--r-- | mm/swap.c | 11 |
1 files changed, 5 insertions, 6 deletions
@@ -242,7 +242,7 @@ void rotate_reclaimable_page(struct page *page) | |||
242 | get_page(page); | 242 | get_page(page); |
243 | local_irq_save(flags); | 243 | local_irq_save(flags); |
244 | pvec = this_cpu_ptr(&lru_rotate_pvecs); | 244 | pvec = this_cpu_ptr(&lru_rotate_pvecs); |
245 | if (!pagevec_add(pvec, page)) | 245 | if (!pagevec_add(pvec, page) || PageCompound(page)) |
246 | pagevec_move_tail(pvec); | 246 | pagevec_move_tail(pvec); |
247 | local_irq_restore(flags); | 247 | local_irq_restore(flags); |
248 | } | 248 | } |
@@ -296,7 +296,7 @@ void activate_page(struct page *page) | |||
296 | struct pagevec *pvec = &get_cpu_var(activate_page_pvecs); | 296 | struct pagevec *pvec = &get_cpu_var(activate_page_pvecs); |
297 | 297 | ||
298 | get_page(page); | 298 | get_page(page); |
299 | if (!pagevec_add(pvec, page)) | 299 | if (!pagevec_add(pvec, page) || PageCompound(page)) |
300 | pagevec_lru_move_fn(pvec, __activate_page, NULL); | 300 | pagevec_lru_move_fn(pvec, __activate_page, NULL); |
301 | put_cpu_var(activate_page_pvecs); | 301 | put_cpu_var(activate_page_pvecs); |
302 | } | 302 | } |
@@ -391,9 +391,8 @@ static void __lru_cache_add(struct page *page) | |||
391 | struct pagevec *pvec = &get_cpu_var(lru_add_pvec); | 391 | struct pagevec *pvec = &get_cpu_var(lru_add_pvec); |
392 | 392 | ||
393 | get_page(page); | 393 | get_page(page); |
394 | if (!pagevec_space(pvec)) | 394 | if (!pagevec_add(pvec, page) || PageCompound(page)) |
395 | __pagevec_lru_add(pvec); | 395 | __pagevec_lru_add(pvec); |
396 | pagevec_add(pvec, page); | ||
397 | put_cpu_var(lru_add_pvec); | 396 | put_cpu_var(lru_add_pvec); |
398 | } | 397 | } |
399 | 398 | ||
@@ -628,7 +627,7 @@ void deactivate_file_page(struct page *page) | |||
628 | if (likely(get_page_unless_zero(page))) { | 627 | if (likely(get_page_unless_zero(page))) { |
629 | struct pagevec *pvec = &get_cpu_var(lru_deactivate_file_pvecs); | 628 | struct pagevec *pvec = &get_cpu_var(lru_deactivate_file_pvecs); |
630 | 629 | ||
631 | if (!pagevec_add(pvec, page)) | 630 | if (!pagevec_add(pvec, page) || PageCompound(page)) |
632 | pagevec_lru_move_fn(pvec, lru_deactivate_file_fn, NULL); | 631 | pagevec_lru_move_fn(pvec, lru_deactivate_file_fn, NULL); |
633 | put_cpu_var(lru_deactivate_file_pvecs); | 632 | put_cpu_var(lru_deactivate_file_pvecs); |
634 | } | 633 | } |
@@ -648,7 +647,7 @@ void deactivate_page(struct page *page) | |||
648 | struct pagevec *pvec = &get_cpu_var(lru_deactivate_pvecs); | 647 | struct pagevec *pvec = &get_cpu_var(lru_deactivate_pvecs); |
649 | 648 | ||
650 | get_page(page); | 649 | get_page(page); |
651 | if (!pagevec_add(pvec, page)) | 650 | if (!pagevec_add(pvec, page) || PageCompound(page)) |
652 | pagevec_lru_move_fn(pvec, lru_deactivate_fn, NULL); | 651 | pagevec_lru_move_fn(pvec, lru_deactivate_fn, NULL); |
653 | put_cpu_var(lru_deactivate_pvecs); | 652 | put_cpu_var(lru_deactivate_pvecs); |
654 | } | 653 | } |