shmem: convert shmem_write_begin() to use shmem_get_folio()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Fri, 2 Sep 2022 19:46:22 +0000 (20:46 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 3 Oct 2022 21:02:49 +0000 (14:02 -0700)
Use a folio throughout this function, saving a couple of calls to
compound_head().

Link: https://lkml.kernel.org/r/20220902194653.1739778-27-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/shmem.c

index 772a30593fcca866ae84870f54b246840767adab..c69b53602a1d85282ebe1faeb64be68bbcf5553a 100644 (file)
@@ -2498,6 +2498,7 @@ shmem_write_begin(struct file *file, struct address_space *mapping,
        struct inode *inode = mapping->host;
        struct shmem_inode_info *info = SHMEM_I(inode);
        pgoff_t index = pos >> PAGE_SHIFT;
+       struct folio *folio;
        int ret = 0;
 
        /* i_rwsem is held by caller */
@@ -2509,14 +2510,15 @@ shmem_write_begin(struct file *file, struct address_space *mapping,
                        return -EPERM;
        }
 
-       ret = shmem_getpage(inode, index, pagep, SGP_WRITE);
+       ret = shmem_get_folio(inode, index, &folio, SGP_WRITE);
 
        if (ret)
                return ret;
 
+       *pagep = folio_file_page(folio, index);
        if (PageHWPoison(*pagep)) {
-               unlock_page(*pagep);
-               put_page(*pagep);
+               folio_unlock(folio);
+               folio_put(folio);
                *pagep = NULL;
                return -EIO;
        }