diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/mm_inline.h | 27 | ||||
-rw-r--r-- | include/linux/page-flags.h | 8 |
2 files changed, 33 insertions, 2 deletions
diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h index 2704729777ef..96e970485b6c 100644 --- a/include/linux/mm_inline.h +++ b/include/linux/mm_inline.h | |||
@@ -1,3 +1,28 @@ | |||
1 | #ifndef LINUX_MM_INLINE_H | ||
2 | #define LINUX_MM_INLINE_H | ||
3 | |||
4 | /** | ||
5 | * page_is_file_cache - should the page be on a file LRU or anon LRU? | ||
6 | * @page: the page to test | ||
7 | * | ||
8 | * Returns !0 if @page is page cache page backed by a regular filesystem, | ||
9 | * or 0 if @page is anonymous, tmpfs or otherwise ram or swap backed. | ||
10 | * Used by functions that manipulate the LRU lists, to sort a page | ||
11 | * onto the right LRU list. | ||
12 | * | ||
13 | * We would like to get this info without a page flag, but the state | ||
14 | * needs to survive until the page is last deleted from the LRU, which | ||
15 | * could be as far down as __page_cache_release. | ||
16 | */ | ||
17 | static inline int page_is_file_cache(struct page *page) | ||
18 | { | ||
19 | if (PageSwapBacked(page)) | ||
20 | return 0; | ||
21 | |||
22 | /* The page is page cache backed by a normal filesystem. */ | ||
23 | return 1; | ||
24 | } | ||
25 | |||
1 | static inline void | 26 | static inline void |
2 | add_page_to_lru_list(struct zone *zone, struct page *page, enum lru_list l) | 27 | add_page_to_lru_list(struct zone *zone, struct page *page, enum lru_list l) |
3 | { | 28 | { |
@@ -65,3 +90,5 @@ static inline enum lru_list page_lru(struct page *page) | |||
65 | 90 | ||
66 | return lru; | 91 | return lru; |
67 | } | 92 | } |
93 | |||
94 | #endif | ||
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index c74d3e875314..57b688cfb5e2 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h | |||
@@ -93,6 +93,7 @@ enum pageflags { | |||
93 | PG_mappedtodisk, /* Has blocks allocated on-disk */ | 93 | PG_mappedtodisk, /* Has blocks allocated on-disk */ |
94 | PG_reclaim, /* To be reclaimed asap */ | 94 | PG_reclaim, /* To be reclaimed asap */ |
95 | PG_buddy, /* Page is free, on buddy lists */ | 95 | PG_buddy, /* Page is free, on buddy lists */ |
96 | PG_swapbacked, /* Page is backed by RAM/swap */ | ||
96 | #ifdef CONFIG_IA64_UNCACHED_ALLOCATOR | 97 | #ifdef CONFIG_IA64_UNCACHED_ALLOCATOR |
97 | PG_uncached, /* Page has been mapped as uncached */ | 98 | PG_uncached, /* Page has been mapped as uncached */ |
98 | #endif | 99 | #endif |
@@ -176,6 +177,7 @@ PAGEFLAG(SavePinned, savepinned); /* Xen */ | |||
176 | PAGEFLAG(Reserved, reserved) __CLEARPAGEFLAG(Reserved, reserved) | 177 | PAGEFLAG(Reserved, reserved) __CLEARPAGEFLAG(Reserved, reserved) |
177 | PAGEFLAG(Private, private) __CLEARPAGEFLAG(Private, private) | 178 | PAGEFLAG(Private, private) __CLEARPAGEFLAG(Private, private) |
178 | __SETPAGEFLAG(Private, private) | 179 | __SETPAGEFLAG(Private, private) |
180 | PAGEFLAG(SwapBacked, swapbacked) __CLEARPAGEFLAG(SwapBacked, swapbacked) | ||
179 | 181 | ||
180 | __PAGEFLAG(SlobPage, slob_page) | 182 | __PAGEFLAG(SlobPage, slob_page) |
181 | __PAGEFLAG(SlobFree, slob_free) | 183 | __PAGEFLAG(SlobFree, slob_free) |
@@ -334,7 +336,8 @@ static inline void __ClearPageTail(struct page *page) | |||
334 | * Flags checked in bad_page(). Pages on the free list should not have | 336 | * Flags checked in bad_page(). Pages on the free list should not have |
335 | * these flags set. It they are, there is a problem. | 337 | * these flags set. It they are, there is a problem. |
336 | */ | 338 | */ |
337 | #define PAGE_FLAGS_CLEAR_WHEN_BAD (PAGE_FLAGS | 1 << PG_reclaim | 1 << PG_dirty) | 339 | #define PAGE_FLAGS_CLEAR_WHEN_BAD (PAGE_FLAGS | \ |
340 | 1 << PG_reclaim | 1 << PG_dirty | 1 << PG_swapbacked) | ||
338 | 341 | ||
339 | /* | 342 | /* |
340 | * Flags checked when a page is freed. Pages being freed should not have | 343 | * Flags checked when a page is freed. Pages being freed should not have |
@@ -347,7 +350,8 @@ static inline void __ClearPageTail(struct page *page) | |||
347 | * Pages being prepped should not have these flags set. It they are, there | 350 | * Pages being prepped should not have these flags set. It they are, there |
348 | * is a problem. | 351 | * is a problem. |
349 | */ | 352 | */ |
350 | #define PAGE_FLAGS_CHECK_AT_PREP (PAGE_FLAGS | 1 << PG_reserved | 1 << PG_dirty) | 353 | #define PAGE_FLAGS_CHECK_AT_PREP (PAGE_FLAGS | \ |
354 | 1 << PG_reserved | 1 << PG_dirty | 1 << PG_swapbacked) | ||
351 | 355 | ||
352 | #endif /* !__GENERATING_BOUNDS_H */ | 356 | #endif /* !__GENERATING_BOUNDS_H */ |
353 | #endif /* PAGE_FLAGS_H */ | 357 | #endif /* PAGE_FLAGS_H */ |