fs: Convert trivial uses of __set_page_dirty_nobuffers to filemap_dirty_folio
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Wed, 9 Feb 2022 20:22:03 +0000 (20:22 +0000)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Tue, 15 Mar 2022 12:34:38 +0000 (08:34 -0400)
These filesystems use __set_page_dirty_nobuffers() either directly or
with a very thin wrapper; convert them en masse.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Acked-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Tested-by: Mike Marshall <hubcap@omnibond.com> # orangefs
Tested-by: David Howells <dhowells@redhat.com> # afs
12 files changed:
fs/btrfs/inode.c
fs/ext4/inode.c
fs/fuse/file.c
fs/gfs2/aops.c
fs/hostfs/hostfs_kern.c
fs/jfs/jfs_metapage.c
fs/nfs/file.c
fs/ntfs/aops.c
fs/orangefs/inode.c
fs/vboxsf/file.c
fs/xfs/xfs_aops.c
fs/zonefs/super.c

index 9046c14f76af07ca6c233647134d206e001e7434..0b2150f97a95b3faf1a8875c65953a193340f8e2 100644 (file)
@@ -10077,11 +10077,6 @@ int btrfs_prealloc_file_range_trans(struct inode *inode,
                                           min_size, actual_len, alloc_hint, trans);
 }
 
-static int btrfs_set_page_dirty(struct page *page)
-{
-       return __set_page_dirty_nobuffers(page);
-}
-
 static int btrfs_permission(struct user_namespace *mnt_userns,
                            struct inode *inode, int mask)
 {
@@ -10644,7 +10639,7 @@ static const struct address_space_operations btrfs_aops = {
 #ifdef CONFIG_MIGRATION
        .migratepage    = btrfs_migratepage,
 #endif
-       .set_page_dirty = btrfs_set_page_dirty,
+       .dirty_folio    = filemap_dirty_folio,
        .error_remove_page = generic_error_remove_page,
        .swap_activate  = btrfs_swap_activate,
        .swap_deactivate = btrfs_swap_deactivate,
index 678ba122f8b15b9581a0fb6c3c61c2b7f918658a..c48dbbf0e9b2ad957bfa5014fe306d65fafde2b0 100644 (file)
@@ -3541,22 +3541,23 @@ const struct iomap_ops ext4_iomap_report_ops = {
 };
 
 /*
- * Pages can be marked dirty completely asynchronously from ext4's journalling
- * activity.  By filemap_sync_pte(), try_to_unmap_one(), etc.  We cannot do
- * much here because ->set_page_dirty is called under VFS locks.  The page is
- * not necessarily locked.
+ * Folios can be marked dirty completely asynchronously from ext4's
+ * journalling activity.  By filemap_sync_pte(), try_to_unmap_one(), etc.
+ * We cannot do much here because ->dirty_folio may be called with the
+ * page table lock held.  The folio is not necessarily locked.
  *
- * We cannot just dirty the page and leave attached buffers clean, because the
+ * We cannot just dirty the folio and leave attached buffers clean, because the
  * buffers' dirty state is "definitive".  We cannot just set the buffers dirty
  * or jbddirty because all the journalling code will explode.
  *
- * So what we do is to mark the page "pending dirty" and next time writepage
+ * So what we do is to mark the folio "pending dirty" and next time writepage
  * is called, propagate that into the buffers appropriately.
  */
-static int ext4_journalled_set_page_dirty(struct page *page)
+static bool ext4_journalled_dirty_folio(struct address_space *mapping,
+               struct folio *folio)
 {
-       SetPageChecked(page);
-       return __set_page_dirty_nobuffers(page);
+       folio_set_checked(folio);
+       return filemap_dirty_folio(mapping, folio);
 }
 
 static int ext4_set_page_dirty(struct page *page)
@@ -3598,7 +3599,7 @@ static const struct address_space_operations ext4_journalled_aops = {
        .writepages             = ext4_writepages,
        .write_begin            = ext4_write_begin,
        .write_end              = ext4_journalled_write_end,
-       .set_page_dirty         = ext4_journalled_set_page_dirty,
+       .dirty_folio            = ext4_journalled_dirty_folio,
        .bmap                   = ext4_bmap,
        .invalidate_folio       = ext4_journalled_invalidate_folio,
        .releasepage            = ext4_releasepage,
index aed0d5dcd02269a4557189b56c101b70af5fab38..48062c2506bdeff6b43b01ece600ad6661529cea 100644 (file)
@@ -3162,7 +3162,7 @@ static const struct address_space_operations fuse_file_aops  = {
        .writepage      = fuse_writepage,
        .writepages     = fuse_writepages,
        .launder_folio  = fuse_launder_folio,
-       .set_page_dirty = __set_page_dirty_nobuffers,
+       .dirty_folio    = filemap_dirty_folio,
        .bmap           = fuse_bmap,
        .direct_IO      = fuse_direct_IO,
        .write_begin    = fuse_write_begin,
index 119cb38d99a73c41e6857a2c36577692231828ea..7c096a75d70339d51cadf609262133e3399a3f72 100644 (file)
@@ -780,7 +780,7 @@ static const struct address_space_operations gfs2_aops = {
        .writepages = gfs2_writepages,
        .readpage = gfs2_readpage,
        .readahead = gfs2_readahead,
-       .set_page_dirty = __set_page_dirty_nobuffers,
+       .dirty_folio = filemap_dirty_folio,
        .releasepage = iomap_releasepage,
        .invalidate_folio = iomap_invalidate_folio,
        .bmap = gfs2_bmap,
index ef481c3d901925cbfc2bd7e6cbd94f2b2672f915..634b8a6b716c86a9f13ef34c2717f0b122da038f 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/statfs.h>
 #include <linux/slab.h>
 #include <linux/seq_file.h>
+#include <linux/writeback.h>
 #include <linux/mount.h>
 #include <linux/namei.h>
 #include "hostfs.h"
@@ -504,7 +505,7 @@ static int hostfs_write_end(struct file *file, struct address_space *mapping,
 static const struct address_space_operations hostfs_aops = {
        .writepage      = hostfs_writepage,
        .readpage       = hostfs_readpage,
-       .set_page_dirty = __set_page_dirty_nobuffers,
+       .dirty_folio    = filemap_dirty_folio,
        .write_begin    = hostfs_write_begin,
        .write_end      = hostfs_write_end,
 };
index d856aee3eec34e86b0e8b69833e56516a909525e..4e9fd49e1b9069345fd2a8e0f1fdbb1af68cadb6 100644 (file)
@@ -570,7 +570,7 @@ const struct address_space_operations jfs_metapage_aops = {
        .writepage      = metapage_writepage,
        .releasepage    = metapage_releasepage,
        .invalidate_folio = metapage_invalidate_folio,
-       .set_page_dirty = __set_page_dirty_nobuffers,
+       .dirty_folio    = filemap_dirty_folio,
 };
 
 struct metapage *__get_metapage(struct inode *inode, unsigned long lblock,
index 5dadf6eadabe82251c29c3b1acb08b554ce46b8d..2df2a539273772fb3e3ce3814861be2ce28c7890 100644 (file)
@@ -515,7 +515,7 @@ static void nfs_swap_deactivate(struct file *file)
 const struct address_space_operations nfs_file_aops = {
        .readpage = nfs_readpage,
        .readpages = nfs_readpages,
-       .set_page_dirty = __set_page_dirty_nobuffers,
+       .dirty_folio = filemap_dirty_folio,
        .writepage = nfs_writepage,
        .writepages = nfs_writepages,
        .write_begin = nfs_write_begin,
index 6858bf6df49a6abe468f03bf73f3107dc14327c2..dd71f6ac0272158aa8290ed1bbf89cca9530dbb7 100644 (file)
@@ -1684,9 +1684,7 @@ const struct address_space_operations ntfs_mst_aops = {
        .readpage       = ntfs_readpage,        /* Fill page with data. */
 #ifdef NTFS_RW
        .writepage      = ntfs_writepage,       /* Write dirty page to disk. */
-       .set_page_dirty = __set_page_dirty_nobuffers,   /* Set the page dirty
-                                                  without touching the buffers
-                                                  belonging to the page. */
+       .dirty_folio    = filemap_dirty_folio,
 #endif /* NTFS_RW */
        .migratepage    = buffer_migrate_page,
        .is_partially_uptodate  = block_is_partially_uptodate,
index 8a9bbbbdf4063b7a382087ac3b5f7150961dd65c..79c1025d18ea9432b5ac5f6bbcc7f5162145bf2a 100644 (file)
@@ -634,7 +634,7 @@ static const struct address_space_operations orangefs_address_operations = {
        .readahead = orangefs_readahead,
        .readpage = orangefs_readpage,
        .writepages = orangefs_writepages,
-       .set_page_dirty = __set_page_dirty_nobuffers,
+       .dirty_folio = filemap_dirty_folio,
        .write_begin = orangefs_write_begin,
        .write_end = orangefs_write_end,
        .invalidate_folio = orangefs_invalidate_folio,
index 864c2fad23beb34bdeed5d2c981ace8019eed687..d74e0d336995d48131c96ff5b8e251783246e42a 100644 (file)
@@ -354,7 +354,7 @@ out:
 const struct address_space_operations vboxsf_reg_aops = {
        .readpage = vboxsf_readpage,
        .writepage = vboxsf_writepage,
-       .set_page_dirty = __set_page_dirty_nobuffers,
+       .dirty_folio = filemap_dirty_folio,
        .write_begin = simple_write_begin,
        .write_end = vboxsf_write_end,
 };
index 7dd314f2288f5e357f229cbd440da4de332916c5..37b03675b8c3542f585bebdaf4168a83a09b8cfb 100644 (file)
@@ -567,7 +567,7 @@ const struct address_space_operations xfs_address_space_operations = {
        .readpage               = xfs_vm_readpage,
        .readahead              = xfs_vm_readahead,
        .writepages             = xfs_vm_writepages,
-       .set_page_dirty         = __set_page_dirty_nobuffers,
+       .dirty_folio            = filemap_dirty_folio,
        .releasepage            = iomap_releasepage,
        .invalidate_folio       = iomap_invalidate_folio,
        .bmap                   = xfs_vm_bmap,
index 887b39553eb4953dec660bd3713579ade8ce3858..360db85afd85b80d67a7a63dd0c654f39d278ac0 100644 (file)
@@ -185,7 +185,7 @@ static const struct address_space_operations zonefs_file_aops = {
        .readahead              = zonefs_readahead,
        .writepage              = zonefs_writepage,
        .writepages             = zonefs_writepages,
-       .set_page_dirty         = __set_page_dirty_nobuffers,
+       .dirty_folio            = filemap_dirty_folio,
        .releasepage            = iomap_releasepage,
        .invalidate_folio       = iomap_invalidate_folio,
        .migratepage            = iomap_migrate_page,