iomap: move the io_folios field out of struct iomap_ioend
authorChristoph Hellwig <hch@lst.de>
Thu, 7 Dec 2023 07:26:59 +0000 (08:26 +0100)
committerChristian Brauner <brauner@kernel.org>
Thu, 1 Feb 2024 13:20:10 +0000 (14:20 +0100)
The io_folios member in struct iomap_ioend counts the number of folios
added to an ioend.  It is only used at submission time and can thus be
moved to iomap_writepage_ctx instead.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20231207072710.176093-4-hch@lst.de
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/iomap/buffered-io.c
include/linux/iomap.h

index 1492706cdc3d21a15ff5e80bcd659e4de4cc5902..c013d35b07b78a258130df53cd501db1ce9e1a55 100644 (file)
@@ -1675,10 +1675,11 @@ iomap_alloc_ioend(struct inode *inode, struct iomap_writepage_ctx *wpc,
        ioend->io_flags = wpc->iomap.flags;
        ioend->io_inode = inode;
        ioend->io_size = 0;
-       ioend->io_folios = 0;
        ioend->io_offset = offset;
        ioend->io_bio = bio;
        ioend->io_sector = sector;
+
+       wpc->nr_folios = 0;
        return ioend;
 }
 
@@ -1722,7 +1723,7 @@ iomap_can_add_to_ioend(struct iomap_writepage_ctx *wpc, loff_t offset,
         * also prevents long tight loops ending page writeback on all the
         * folios in the ioend.
         */
-       if (wpc->ioend->io_folios >= IOEND_BATCH_SIZE)
+       if (wpc->nr_folios >= IOEND_BATCH_SIZE)
                return false;
        return true;
 }
@@ -1819,7 +1820,7 @@ iomap_writepage_map(struct iomap_writepage_ctx *wpc,
                count++;
        }
        if (count)
-               wpc->ioend->io_folios++;
+               wpc->nr_folios++;
 
        WARN_ON_ONCE(!wpc->ioend && !list_empty(&submit_list));
        WARN_ON_ONCE(!folio_test_locked(folio));
index 96dd0acbba44aca735ff027ffb8f1c118cb762e8..b2a05dff914d0cbdd4b995e963fea3a87c0ba49b 100644 (file)
@@ -293,7 +293,6 @@ struct iomap_ioend {
        struct list_head        io_list;        /* next ioend in chain */
        u16                     io_type;
        u16                     io_flags;       /* IOMAP_F_* */
-       u32                     io_folios;      /* folios added to ioend */
        struct inode            *io_inode;      /* file being written to */
        size_t                  io_size;        /* size of the extent */
        loff_t                  io_offset;      /* offset in the file */
@@ -329,6 +328,7 @@ struct iomap_writepage_ctx {
        struct iomap            iomap;
        struct iomap_ioend      *ioend;
        const struct iomap_writeback_ops *ops;
+       u32                     nr_folios;      /* folios added to the ioend */
 };
 
 void iomap_finish_ioends(struct iomap_ioend *ioend, int error);