mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-27 09:02:06 +00:00
mm: introduce page_lru_base_type()
Instead of abusing page_is_file_cache() for LRU list index arithmetic, add another helper with a more appropriate name and convert the non-boolean users of page_is_file_cache() accordingly. This new helper gives the LRU base type a page is supposed to live on, inactive anon or inactive file. [hugh.dickins@tiscali.co.uk: convert del_page_from_lru() also] Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> Reviewed-by: Rik van Riel <riel@redhat.com> Cc: Minchan Kim <minchan.kim@gmail.com> Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
b7c46d151c
commit
401a8e1c16
3 changed files with 24 additions and 9 deletions
|
@ -39,21 +39,36 @@ del_page_from_lru_list(struct zone *zone, struct page *page, enum lru_list l)
|
|||
mem_cgroup_del_lru_list(page, l);
|
||||
}
|
||||
|
||||
/**
|
||||
* page_lru_base_type - which LRU list type should a page be on?
|
||||
* @page: the page to test
|
||||
*
|
||||
* Used for LRU list index arithmetic.
|
||||
*
|
||||
* Returns the base LRU type - file or anon - @page should be on.
|
||||
*/
|
||||
static inline enum lru_list page_lru_base_type(struct page *page)
|
||||
{
|
||||
if (page_is_file_cache(page))
|
||||
return LRU_INACTIVE_FILE;
|
||||
return LRU_INACTIVE_ANON;
|
||||
}
|
||||
|
||||
static inline void
|
||||
del_page_from_lru(struct zone *zone, struct page *page)
|
||||
{
|
||||
enum lru_list l = LRU_BASE;
|
||||
enum lru_list l;
|
||||
|
||||
list_del(&page->lru);
|
||||
if (PageUnevictable(page)) {
|
||||
__ClearPageUnevictable(page);
|
||||
l = LRU_UNEVICTABLE;
|
||||
} else {
|
||||
l = page_lru_base_type(page);
|
||||
if (PageActive(page)) {
|
||||
__ClearPageActive(page);
|
||||
l += LRU_ACTIVE;
|
||||
}
|
||||
l += page_is_file_cache(page);
|
||||
}
|
||||
__dec_zone_state(zone, NR_LRU_BASE + l);
|
||||
mem_cgroup_del_lru_list(page, l);
|
||||
|
@ -68,14 +83,14 @@ del_page_from_lru(struct zone *zone, struct page *page)
|
|||
*/
|
||||
static inline enum lru_list page_lru(struct page *page)
|
||||
{
|
||||
enum lru_list lru = LRU_BASE;
|
||||
enum lru_list lru;
|
||||
|
||||
if (PageUnevictable(page))
|
||||
lru = LRU_UNEVICTABLE;
|
||||
else {
|
||||
lru = page_lru_base_type(page);
|
||||
if (PageActive(page))
|
||||
lru += LRU_ACTIVE;
|
||||
lru += page_is_file_cache(page);
|
||||
}
|
||||
|
||||
return lru;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue