nfs: Convert to release_folio
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Sun, 1 May 2022 03:53:28 +0000 (23:53 -0400)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Tue, 10 May 2022 03:12:33 +0000 (23:12 -0400)
Use folios throughout the release_folio paths.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
fs/nfs/file.c
fs/nfs/fscache.h

index 4f6d1f90b87fd97ea28614c2b71f94d2807dc388..d764b3ce79050bc9014b164b05d174c2011f5d5c 100644 (file)
@@ -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,
@@ -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,
index 4e980cc04779bdb15b1abf0465bd1670f900aa7a..2a37af88097800c78bbdafbe9e8642d29db99506 100644 (file)
@@ -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;
@@ -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)
 {