diff options
Diffstat (limited to 'include/linux/page-flags.h')
| -rw-r--r-- | include/linux/page-flags.h | 56 | 
1 files changed, 15 insertions, 41 deletions
| diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index b5f14d581113..1c3b6e5c8bfd 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h @@ -68,9 +68,6 @@   * might lose their PG_swapbacked flag when they simply can be dropped (e.g. as   * a result of MADV_FREE).   * - * PG_uptodate tells whether the page's contents is valid.  When a read - * completes, the page becomes uptodate, unless a disk I/O error happened. - *   * PG_referenced, PG_reclaim are used for page reclaim for anonymous and   * file-backed pagecache (see mm/vmscan.c).   * @@ -383,7 +380,7 @@ static __always_inline int TestClearPage##uname(struct page *page)	\  	TESTCLEARFLAG(uname, lname, policy)  #define TESTPAGEFLAG_FALSE(uname, lname)				\ -static inline bool folio_test_##lname(const struct folio *folio) { return 0; } \ +static inline bool folio_test_##lname(const struct folio *folio) { return false; } \  static inline int Page##uname(const struct page *page) { return 0; }  #define SETPAGEFLAG_NOOP(uname, lname)					\ @@ -522,7 +519,11 @@ PAGEFLAG_FALSE(Uncached, uncached)  PAGEFLAG(HWPoison, hwpoison, PF_ANY)  TESTSCFLAG(HWPoison, hwpoison, PF_ANY)  #define __PG_HWPOISON (1UL << PG_hwpoison) +#define MAGIC_HWPOISON	0x48575053U	/* HWPS */ +extern void SetPageHWPoisonTakenOff(struct page *page); +extern void ClearPageHWPoisonTakenOff(struct page *page);  extern bool take_page_off_buddy(struct page *page); +extern bool put_page_back_buddy(struct page *page);  #else  PAGEFLAG_FALSE(HWPoison, hwpoison)  #define __PG_HWPOISON 0 @@ -615,6 +616,16 @@ TESTPAGEFLAG_FALSE(Ksm, ksm)  u64 stable_page_flags(struct page *page); +/** + * folio_test_uptodate - Is this folio up to date? + * @folio: The folio. + * + * The uptodate flag is set on a folio when every byte in the folio is + * at least as new as the corresponding bytes on storage.  Anonymous + * and CoW folios are always uptodate.  If the folio is not uptodate, + * some of the bytes in it may be; see the is_partially_uptodate() + * address_space operation. + */  static inline bool folio_test_uptodate(struct folio *folio)  {  	bool ret = test_bit(PG_uptodate, folio_flags(folio, 0)); @@ -909,43 +920,6 @@ extern bool is_free_buddy_page(struct page *page);  __PAGEFLAG(Isolated, isolated, PF_ANY); -/* - * If network-based swap is enabled, sl*b must keep track of whether pages - * were allocated from pfmemalloc reserves. - */ -static inline int PageSlabPfmemalloc(struct page *page) -{ -	VM_BUG_ON_PAGE(!PageSlab(page), page); -	return PageActive(page); -} - -/* - * A version of PageSlabPfmemalloc() for opportunistic checks where the page - * might have been freed under us and not be a PageSlab anymore. - */ -static inline int __PageSlabPfmemalloc(struct page *page) -{ -	return PageActive(page); -} - -static inline void SetPageSlabPfmemalloc(struct page *page) -{ -	VM_BUG_ON_PAGE(!PageSlab(page), page); -	SetPageActive(page); -} - -static inline void __ClearPageSlabPfmemalloc(struct page *page) -{ -	VM_BUG_ON_PAGE(!PageSlab(page), page); -	__ClearPageActive(page); -} - -static inline void ClearPageSlabPfmemalloc(struct page *page) -{ -	VM_BUG_ON_PAGE(!PageSlab(page), page); -	ClearPageActive(page); -} -  #ifdef CONFIG_MMU  #define __PG_MLOCKED		(1UL << PG_mlocked)  #else |