|
@@ -132,34 +132,21 @@ static void pagevec_move_tail(struct pagevec *pvec)
|
|
|
* Writeback is about to end against a page which has been marked for immediate
|
|
|
* reclaim. If it still appears to be reclaimable, move it to the tail of the
|
|
|
* inactive list.
|
|
|
- *
|
|
|
- * Returns zero if it cleared PG_writeback.
|
|
|
*/
|
|
|
-int rotate_reclaimable_page(struct page *page)
|
|
|
+void rotate_reclaimable_page(struct page *page)
|
|
|
{
|
|
|
- struct pagevec *pvec;
|
|
|
- unsigned long flags;
|
|
|
-
|
|
|
- if (PageLocked(page))
|
|
|
- return 1;
|
|
|
- if (PageDirty(page))
|
|
|
- return 1;
|
|
|
- if (PageActive(page))
|
|
|
- return 1;
|
|
|
- if (!PageLRU(page))
|
|
|
- return 1;
|
|
|
-
|
|
|
- page_cache_get(page);
|
|
|
- local_irq_save(flags);
|
|
|
- pvec = &__get_cpu_var(lru_rotate_pvecs);
|
|
|
- if (!pagevec_add(pvec, page))
|
|
|
- pagevec_move_tail(pvec);
|
|
|
- local_irq_restore(flags);
|
|
|
-
|
|
|
- if (!test_clear_page_writeback(page))
|
|
|
- BUG();
|
|
|
+ if (!PageLocked(page) && !PageDirty(page) && !PageActive(page) &&
|
|
|
+ PageLRU(page)) {
|
|
|
+ struct pagevec *pvec;
|
|
|
+ unsigned long flags;
|
|
|
|
|
|
- return 0;
|
|
|
+ page_cache_get(page);
|
|
|
+ local_irq_save(flags);
|
|
|
+ pvec = &__get_cpu_var(lru_rotate_pvecs);
|
|
|
+ if (!pagevec_add(pvec, page))
|
|
|
+ pagevec_move_tail(pvec);
|
|
|
+ local_irq_restore(flags);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/*
|