diff options
Diffstat (limited to 'include/linux/mm_inline.h')
-rw-r--r-- | include/linux/mm_inline.h | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h index f451fedd1e75..67d7697fd019 100644 --- a/include/linux/mm_inline.h +++ b/include/linux/mm_inline.h | |||
@@ -91,11 +91,16 @@ del_page_from_lru(struct zone *zone, struct page *page) | |||
91 | enum lru_list l = LRU_BASE; | 91 | enum lru_list l = LRU_BASE; |
92 | 92 | ||
93 | list_del(&page->lru); | 93 | list_del(&page->lru); |
94 | if (PageActive(page)) { | 94 | if (PageUnevictable(page)) { |
95 | __ClearPageActive(page); | 95 | __ClearPageUnevictable(page); |
96 | l += LRU_ACTIVE; | 96 | l = LRU_UNEVICTABLE; |
97 | } else { | ||
98 | if (PageActive(page)) { | ||
99 | __ClearPageActive(page); | ||
100 | l += LRU_ACTIVE; | ||
101 | } | ||
102 | l += page_is_file_cache(page); | ||
97 | } | 103 | } |
98 | l += page_is_file_cache(page); | ||
99 | __dec_zone_state(zone, NR_LRU_BASE + l); | 104 | __dec_zone_state(zone, NR_LRU_BASE + l); |
100 | } | 105 | } |
101 | 106 | ||
@@ -110,9 +115,13 @@ static inline enum lru_list page_lru(struct page *page) | |||
110 | { | 115 | { |
111 | enum lru_list lru = LRU_BASE; | 116 | enum lru_list lru = LRU_BASE; |
112 | 117 | ||
113 | if (PageActive(page)) | 118 | if (PageUnevictable(page)) |
114 | lru += LRU_ACTIVE; | 119 | lru = LRU_UNEVICTABLE; |
115 | lru += page_is_file_cache(page); | 120 | else { |
121 | if (PageActive(page)) | ||
122 | lru += LRU_ACTIVE; | ||
123 | lru += page_is_file_cache(page); | ||
124 | } | ||
116 | 125 | ||
117 | return lru; | 126 | return lru; |
118 | } | 127 | } |