Loading fs/nfs/file.c +11 −11 Original line number Diff line number Diff line Loading @@ -415,19 +415,19 @@ static void nfs_invalidate_folio(struct folio *folio, size_t offset, } /* * Attempt to release the private state associated with a page * - Called if either PG_private or PG_fscache is set on the page * - Caller holds page lock * - Return true (may release page) or false (may not) * Attempt to release the private state associated with a folio * - Called if either private or fscache flags are set on the folio * - Caller holds folio lock * - Return true (may release folio) or false (may not) */ static int nfs_release_page(struct page *page, gfp_t gfp) static bool nfs_release_folio(struct folio *folio, gfp_t gfp) { dfprintk(PAGECACHE, "NFS: release_page(%p)\n", page); dfprintk(PAGECACHE, "NFS: release_folio(%p)\n", folio); /* If PagePrivate() is set, then the page is not freeable */ if (PagePrivate(page)) return 0; return nfs_fscache_release_page(page, gfp); /* If the private flag is set, then the folio is not freeable */ if (folio_test_private(folio)) return false; return nfs_fscache_release_folio(folio, gfp); } static void nfs_check_dirty_writeback(struct folio *folio, Loading Loading @@ -522,7 +522,7 @@ const struct address_space_operations nfs_file_aops = { .write_begin = nfs_write_begin, .write_end = nfs_write_end, .invalidate_folio = nfs_invalidate_folio, .releasepage = nfs_release_page, .release_folio = nfs_release_folio, .direct_IO = nfs_direct_IO, #ifdef CONFIG_MIGRATION .migratepage = nfs_migrate_page, Loading fs/nfs/fscache.h +7 −7 Original line number Diff line number Diff line Loading @@ -48,14 +48,14 @@ extern void nfs_fscache_release_file(struct inode *, struct file *); extern int __nfs_fscache_read_page(struct inode *, struct page *); extern void __nfs_fscache_write_page(struct inode *, struct page *); static inline int nfs_fscache_release_page(struct page *page, gfp_t gfp) static inline bool nfs_fscache_release_folio(struct folio *folio, gfp_t gfp) { if (PageFsCache(page)) { if (folio_test_fscache(folio)) { if (current_is_kswapd() || !(gfp & __GFP_FS)) return false; wait_on_page_fscache(page); fscache_note_page_release(nfs_i_fscache(page->mapping->host)); nfs_inc_fscache_stats(page->mapping->host, folio_wait_fscache(folio); fscache_note_page_release(nfs_i_fscache(folio->mapping->host)); nfs_inc_fscache_stats(folio->mapping->host, NFSIOS_FSCACHE_PAGES_UNCACHED); } return true; Loading Loading @@ -129,9 +129,9 @@ static inline void nfs_fscache_open_file(struct inode *inode, struct file *filp) {} static inline void nfs_fscache_release_file(struct inode *inode, struct file *file) {} static inline int nfs_fscache_release_page(struct page *page, gfp_t gfp) static inline bool nfs_fscache_release_folio(struct folio *folio, gfp_t gfp) { return 1; /* True: may release page */ return true; /* may release folio */ } static inline int nfs_fscache_read_page(struct inode *inode, struct page *page) { Loading Loading
fs/nfs/file.c +11 −11 Original line number Diff line number Diff line Loading @@ -415,19 +415,19 @@ static void nfs_invalidate_folio(struct folio *folio, size_t offset, } /* * Attempt to release the private state associated with a page * - Called if either PG_private or PG_fscache is set on the page * - Caller holds page lock * - Return true (may release page) or false (may not) * Attempt to release the private state associated with a folio * - Called if either private or fscache flags are set on the folio * - Caller holds folio lock * - Return true (may release folio) or false (may not) */ static int nfs_release_page(struct page *page, gfp_t gfp) static bool nfs_release_folio(struct folio *folio, gfp_t gfp) { dfprintk(PAGECACHE, "NFS: release_page(%p)\n", page); dfprintk(PAGECACHE, "NFS: release_folio(%p)\n", folio); /* If PagePrivate() is set, then the page is not freeable */ if (PagePrivate(page)) return 0; return nfs_fscache_release_page(page, gfp); /* If the private flag is set, then the folio is not freeable */ if (folio_test_private(folio)) return false; return nfs_fscache_release_folio(folio, gfp); } static void nfs_check_dirty_writeback(struct folio *folio, Loading Loading @@ -522,7 +522,7 @@ const struct address_space_operations nfs_file_aops = { .write_begin = nfs_write_begin, .write_end = nfs_write_end, .invalidate_folio = nfs_invalidate_folio, .releasepage = nfs_release_page, .release_folio = nfs_release_folio, .direct_IO = nfs_direct_IO, #ifdef CONFIG_MIGRATION .migratepage = nfs_migrate_page, Loading
fs/nfs/fscache.h +7 −7 Original line number Diff line number Diff line Loading @@ -48,14 +48,14 @@ extern void nfs_fscache_release_file(struct inode *, struct file *); extern int __nfs_fscache_read_page(struct inode *, struct page *); extern void __nfs_fscache_write_page(struct inode *, struct page *); static inline int nfs_fscache_release_page(struct page *page, gfp_t gfp) static inline bool nfs_fscache_release_folio(struct folio *folio, gfp_t gfp) { if (PageFsCache(page)) { if (folio_test_fscache(folio)) { if (current_is_kswapd() || !(gfp & __GFP_FS)) return false; wait_on_page_fscache(page); fscache_note_page_release(nfs_i_fscache(page->mapping->host)); nfs_inc_fscache_stats(page->mapping->host, folio_wait_fscache(folio); fscache_note_page_release(nfs_i_fscache(folio->mapping->host)); nfs_inc_fscache_stats(folio->mapping->host, NFSIOS_FSCACHE_PAGES_UNCACHED); } return true; Loading Loading @@ -129,9 +129,9 @@ static inline void nfs_fscache_open_file(struct inode *inode, struct file *filp) {} static inline void nfs_fscache_release_file(struct inode *inode, struct file *file) {} static inline int nfs_fscache_release_page(struct page *page, gfp_t gfp) static inline bool nfs_fscache_release_folio(struct folio *folio, gfp_t gfp) { return 1; /* True: may release page */ return true; /* may release folio */ } static inline int nfs_fscache_read_page(struct inode *inode, struct page *page) { Loading