]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
netfs: Fault in smaller chunks for non-large folio mappings
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Mon, 27 May 2024 20:17:32 +0000 (21:17 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 Aug 2024 15:35:45 +0000 (17:35 +0200)
[ Upstream commit 98055bc3595500bcf2126b93b1595354bdb86a66 ]

As in commit 4e527d5841e2 ("iomap: fault in smaller chunks for non-large
folio mappings"), we can see a performance loss for filesystems
which have not yet been converted to large folios.

Fixes: c38f4e96e605 ("netfs: Provide func to copy data to pagecache for buffered write")
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Link: https://lore.kernel.org/r/20240527201735.1898381-1-willy@infradead.org
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/netfs/buffered_write.c

index ecbc99ec7d367a3f9cb6d36b34332e156dbf7c05..18055c1e01835194413a0e9a70fa9d9b7dc86080 100644 (file)
@@ -184,7 +184,7 @@ ssize_t netfs_perform_write(struct kiocb *iocb, struct iov_iter *iter,
        unsigned int bdp_flags = (iocb->ki_flags & IOCB_NOWAIT) ? BDP_ASYNC : 0;
        ssize_t written = 0, ret, ret2;
        loff_t i_size, pos = iocb->ki_pos, from, to;
-       size_t max_chunk = PAGE_SIZE << MAX_PAGECACHE_ORDER;
+       size_t max_chunk = mapping_max_folio_size(mapping);
        bool maybe_trouble = false;
 
        if (unlikely(test_bit(NETFS_ICTX_WRITETHROUGH, &ctx->flags) ||