--- 3a442f18b0b3dab5acfd99b5fc4e85389b9b5439 +++ 5dbebd192dad5cd6a454d643992149f84485413c @@ -348,15 +348,23 @@ void mark_page_accessed(struct page *pag EXPORT_SYMBOL(mark_page_accessed); -void __lru_cache_add(struct page *page, enum lru_list lru) +void ______pagevec_lru_add(struct pagevec *pvec, enum lru_list lru, int tail); + +void ____lru_cache_add(struct page *page, enum lru_list lru, int tail) { struct pagevec *pvec = &get_cpu_var(lru_add_pvecs)[lru]; page_cache_get(page); if (!pagevec_add(pvec, page)) - ____pagevec_lru_add(pvec, lru); + ______pagevec_lru_add(pvec, lru, tail); put_cpu_var(lru_add_pvecs); } +EXPORT_SYMBOL(____lru_cache_add); + +void __lru_cache_add(struct page *page, enum lru_list lru) +{ + ____lru_cache_add(page, lru, 0); +} EXPORT_SYMBOL(__lru_cache_add); /** @@ -364,7 +372,7 @@ EXPORT_SYMBOL(__lru_cache_add); * @page: the page to be added to the LRU. * @lru: the LRU list to which the page is added. */ -void lru_cache_add_lru(struct page *page, enum lru_list lru) +void __lru_cache_add_lru(struct page *page, enum lru_list lru, int tail) { if (PageActive(page)) { VM_BUG_ON(PageUnevictable(page)); @@ -375,7 +383,12 @@ void lru_cache_add_lru(struct page *page } VM_BUG_ON(PageLRU(page) || PageActive(page) || PageUnevictable(page)); - __lru_cache_add(page, lru); + ____lru_cache_add(page, lru, tail); +} + +void lru_cache_add_lru(struct page *page, enum lru_list lru) +{ + __lru_cache_add_lru(page, lru, 0); } /** @@ -662,7 +675,7 @@ void lru_add_page_tail(struct zone* zone head = page->lru.prev; else head = &zone->lru[lru].list; - __add_page_to_lru_list(zone, page_tail, lru, head); + __add_page_to_lru_list(zone, page_tail, lru, head, 0); } else { SetPageUnevictable(page_tail); add_page_to_lru_list(zone, page_tail, LRU_UNEVICTABLE); @@ -691,13 +704,18 @@ static void ____pagevec_lru_add_fn(struc * Add the passed pages to the LRU, then drop the caller's refcount * on them. Reinitialises the caller's pagevec. */ -void ____pagevec_lru_add(struct pagevec *pvec, enum lru_list lru) +void ______pagevec_lru_add(struct pagevec *pvec, enum lru_list lru, int tail) { VM_BUG_ON(is_unevictable_lru(lru)); pagevec_lru_move_fn(pvec, ____pagevec_lru_add_fn, (void *)lru); } +void ____pagevec_lru_add(struct pagevec *pvec, enum lru_list lru) +{ + ______pagevec_lru_add(pvec, lru, 0); +} + EXPORT_SYMBOL(____pagevec_lru_add); /*