--- 8f7d24712dc115790269442be6f8c245d4cf6145 +++ 62e4208ecef473a52dda81e9ebc0b40ab3b6bd13 @@ -23,9 +23,12 @@ static inline int page_is_file_cache(str static inline void __add_page_to_lru_list(struct zone *zone, struct page *page, enum lru_list l, - struct list_head *head) + struct list_head *head, int tail) { - list_add(&page->lru, head); + if (tail) + list_add_tail(&page->lru, head); + else + list_add(&page->lru, head); __mod_zone_page_state(zone, NR_LRU_BASE + l, hpage_nr_pages(page)); mem_cgroup_add_lru_list(page, l); } @@ -33,7 +36,13 @@ __add_page_to_lru_list(struct zone *zone static inline void add_page_to_lru_list(struct zone *zone, struct page *page, enum lru_list l) { - __add_page_to_lru_list(zone, page, l, &zone->lru[l].list); + __add_page_to_lru_list(zone, page, l, &zone->lru[l].list, 0); +} + +static inline void +add_page_to_lru_list_tail(struct zone *zone, struct page *page, enum lru_list l) +{ + __add_page_to_lru_list(zone, page, l, &zone->lru[l].list, 1); } static inline void