]> www.infradead.org Git - users/hch/misc.git/commitdiff
mm: remove filemap_fdatawrite_wbc
authorChristoph Hellwig <hch@lst.de>
Mon, 6 Oct 2025 08:30:11 +0000 (10:30 +0200)
committerChristoph Hellwig <hch@lst.de>
Thu, 23 Oct 2025 06:58:37 +0000 (08:58 +0200)
Replace filemap_fdatawrite_wbc, which exposes a writeback_control to the
callers with a filemap_writeback helper that takes all the possible
arguments and declares the writeback_control itself.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
fs/fs-writeback.c
include/linux/pagemap.h
mm/filemap.c

index 2b35e80037feed4c711d55199a4e73eb0fc3ff26..d40b47132de36713288b0e155c35cf444afd77ac 100644 (file)
@@ -807,9 +807,9 @@ static void wbc_attach_and_unlock_inode(struct writeback_control *wbc,
  * @wbc: writeback_control of interest
  * @inode: target inode
  *
- * This function is to be used by __filemap_fdatawrite_range(), which is an
- * alternative entry point into writeback code, and first ensures @inode is
- * associated with a bdi_writeback and attaches it to @wbc.
+ * This function is to be used by filemap_writeback(), which is an alternative
+ * entry point into writeback code, and first ensures @inode is associated with
+ * a bdi_writeback and attaches it to @wbc.
  */
 void wbc_attach_fdatawrite_inode(struct writeback_control *wbc,
                struct inode *inode)
index cebdf160d3ddffc688f97f1f95a22f1acd3862e1..678d8ae23d014c360b28652519d48931f18d49cf 100644 (file)
@@ -60,8 +60,6 @@ int filemap_fdatawrite_range(struct address_space *mapping,
                loff_t start, loff_t end);
 int filemap_check_errors(struct address_space *mapping);
 void __filemap_set_wb_err(struct address_space *mapping, int err);
-int filemap_fdatawrite_wbc(struct address_space *mapping,
-                          struct writeback_control *wbc);
 int kiocb_write_and_wait(struct kiocb *iocb, size_t count);
 
 static inline int filemap_write_and_wait(struct address_space *mapping)
index 3d4c4a96c586a55f703aecc1f8b364d7546fe9d5..7126d0587c949e7f64e000ef57e1185433d0cae4 100644 (file)
@@ -366,31 +366,30 @@ static int filemap_check_and_keep_errors(struct address_space *mapping)
        return 0;
 }
 
-/**
- * filemap_fdatawrite_wbc - start writeback on mapping dirty pages in range
- * @mapping:   address space structure to write
- * @wbc:       the writeback_control controlling the writeout
- *
- * Call writepages on the mapping using the provided wbc to control the
- * writeout.
- *
- * Return: %0 on success, negative error code otherwise.
- */
-int filemap_fdatawrite_wbc(struct address_space *mapping,
-                          struct writeback_control *wbc)
+static int filemap_writeback(struct address_space *mapping, loff_t start,
+               loff_t end, enum writeback_sync_modes sync_mode,
+               long *nr_to_write)
 {
+       struct writeback_control wbc = {
+               .sync_mode      = sync_mode,
+               .nr_to_write    = nr_to_write ? *nr_to_write : LONG_MAX,
+               .range_start    = start,
+               .range_end      = end,
+       };
        int ret;
 
        if (!mapping_can_writeback(mapping) ||
            !mapping_tagged(mapping, PAGECACHE_TAG_DIRTY))
                return 0;
 
-       wbc_attach_fdatawrite_inode(wbc, mapping->host);
-       ret = do_writepages(mapping, wbc);
-       wbc_detach_inode(wbc);
+       wbc_attach_fdatawrite_inode(&wbc, mapping->host);
+       ret = do_writepages(mapping, &wbc);
+       wbc_detach_inode(&wbc);
+
+       if (!ret && nr_to_write)
+               *nr_to_write = wbc.nr_to_write;
        return ret;
 }
-EXPORT_SYMBOL(filemap_fdatawrite_wbc);
 
 /**
  * __filemap_fdatawrite_range - start writeback on mapping dirty pages in range
@@ -412,14 +411,7 @@ EXPORT_SYMBOL(filemap_fdatawrite_wbc);
 int __filemap_fdatawrite_range(struct address_space *mapping, loff_t start,
                                loff_t end, int sync_mode)
 {
-       struct writeback_control wbc = {
-               .sync_mode = sync_mode,
-               .nr_to_write = LONG_MAX,
-               .range_start = start,
-               .range_end = end,
-       };
-
-       return filemap_fdatawrite_wbc(mapping, &wbc);
+       return filemap_writeback(mapping, start, end, sync_mode, NULL);
 }
 
 int filemap_fdatawrite_range(struct address_space *mapping, loff_t start,
@@ -475,18 +467,8 @@ EXPORT_SYMBOL(filemap_flush);
  */
 int filemap_flush_nr(struct address_space *mapping, long *nr_to_write)
 {
-       struct writeback_control wbc = {
-               .nr_to_write = *nr_to_write,
-               .sync_mode = WB_SYNC_NONE,
-               .range_start = 0,
-               .range_end = LLONG_MAX,
-       };
-       int ret;
-
-       ret = filemap_fdatawrite_wbc(mapping, &wbc);
-       if (!ret)
-               *nr_to_write = wbc.nr_to_write;
-       return ret;
+       return filemap_writeback(mapping, 0, LLONG_MAX, WB_SYNC_NONE,
+                       nr_to_write);
 }
 EXPORT_SYMBOL_FOR_MODULES(filemap_flush_nr, "btrfs");