From 3c7a30588312bf53537f5acd54c470624116333b Mon Sep 17 00:00:00 2001 From: Hugh Dickins Date: Thu, 12 Jan 2012 17:20:04 -0800 Subject: [PATCH] --- yaml --- r: 284413 b: refs/heads/master c: 1c1c53d43b387d02174911ecb42ce846577b0ea0 h: refs/heads/master i: 284411: ca987fa41c6356b363d610aec288fac085434c86 v: v3 --- [refs] | 2 +- trunk/include/linux/mm_inline.h | 15 +++++++++------ trunk/mm/swap.c | 4 ++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index d27f0fb2b24d..26ae02fa9882 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4111304dab198c687bc60f2e235a9f7ee92c47c8 +refs/heads/master: 1c1c53d43b387d02174911ecb42ce846577b0ea0 diff --git a/trunk/include/linux/mm_inline.h b/trunk/include/linux/mm_inline.h index 8f84d2e53d0f..227fd3e9a9c9 100644 --- a/trunk/include/linux/mm_inline.h +++ b/trunk/include/linux/mm_inline.h @@ -54,8 +54,14 @@ static inline enum lru_list page_lru_base_type(struct page *page) return LRU_INACTIVE_ANON; } -static inline void -del_page_from_lru(struct zone *zone, struct page *page) +/** + * page_off_lru - which LRU list was page on? clearing its lru flags. + * @page: the page to test + * + * Returns the LRU list a page was on, as an index into the array of LRU + * lists; and clears its Unevictable or Active flags, ready for freeing. + */ +static inline enum lru_list page_off_lru(struct page *page) { enum lru_list lru; @@ -69,9 +75,7 @@ del_page_from_lru(struct zone *zone, struct page *page) lru += LRU_ACTIVE; } } - mem_cgroup_lru_del_list(page, lru); - list_del(&page->lru); - __mod_zone_page_state(zone, NR_LRU_BASE + lru, -hpage_nr_pages(page)); + return lru; } /** @@ -92,7 +96,6 @@ static inline enum lru_list page_lru(struct page *page) if (PageActive(page)) lru += LRU_ACTIVE; } - return lru; } diff --git a/trunk/mm/swap.c b/trunk/mm/swap.c index 0d1b24b3fa87..b0f529b38979 100644 --- a/trunk/mm/swap.c +++ b/trunk/mm/swap.c @@ -53,7 +53,7 @@ static void __page_cache_release(struct page *page) spin_lock_irqsave(&zone->lru_lock, flags); VM_BUG_ON(!PageLRU(page)); __ClearPageLRU(page); - del_page_from_lru(zone, page); + del_page_from_lru_list(zone, page, page_off_lru(page)); spin_unlock_irqrestore(&zone->lru_lock, flags); } } @@ -617,7 +617,7 @@ void release_pages(struct page **pages, int nr, int cold) } VM_BUG_ON(!PageLRU(page)); __ClearPageLRU(page); - del_page_from_lru(zone, page); + del_page_from_lru_list(zone, page, page_off_lru(page)); } list_add(&page->lru, &pages_to_free);