aboutsummaryrefslogtreecommitdiffstats
path: root/fs/netfs/direct_write.c
diff options
context:
space:
mode:
authorDavid Howells <[email protected]>2025-07-01 16:38:46 +0000
committerChristian Brauner <[email protected]>2025-07-01 20:37:14 +0000
commit5e1e6ec2e346c0850f304c31abdef4158007474e (patch)
tree2f31407da4b90fe37338ce1f0fe87c58377edece /fs/netfs/direct_write.c
parentnetfs: Fix i_size updating (diff)
downloadkernel-5e1e6ec2e346c0850f304c31abdef4158007474e.tar.gz
kernel-5e1e6ec2e346c0850f304c31abdef4158007474e.zip
netfs: Merge i_size update functions
Netfslib has two functions for updating the i_size after a write: one for buffered writes into the pagecache and one for direct/unbuffered writes. However, what needs to be done is much the same in both cases, so merge them together. This does raise one question, though: should updating the i_size after a direct write do the same estimated update of i_blocks as is done for buffered writes. Also get rid of the cleanup function pointer from netfs_io_request as it's only used for direct write to update i_size; instead do the i_size setting directly from write collection. Signed-off-by: David Howells <[email protected]> Link: https://lore.kernel.org/[email protected] cc: Steve French <[email protected]> cc: Paulo Alcantara <[email protected]> cc: [email protected] cc: [email protected] cc: [email protected] Signed-off-by: Christian Brauner <[email protected]>
Diffstat (limited to 'fs/netfs/direct_write.c')
-rw-r--r--fs/netfs/direct_write.c19
1 files changed, 0 insertions, 19 deletions
diff --git a/fs/netfs/direct_write.c b/fs/netfs/direct_write.c
index 3efa5894b2c0..dcf2b096cc4e 100644
--- a/fs/netfs/direct_write.c
+++ b/fs/netfs/direct_write.c
@@ -9,24 +9,6 @@
#include <linux/uio.h>
#include "internal.h"
-static void netfs_cleanup_dio_write(struct netfs_io_request *wreq)
-{
- struct inode *inode = wreq->inode;
- unsigned long long end = wreq->start + wreq->transferred;
-
- if (wreq->error || end <= i_size_read(inode))
- return;
-
- spin_lock(&inode->i_lock);
- if (end > i_size_read(inode)) {
- if (wreq->netfs_ops->update_i_size)
- wreq->netfs_ops->update_i_size(inode, end);
- else
- i_size_write(inode, end);
- }
- spin_unlock(&inode->i_lock);
-}
-
/*
* Perform an unbuffered write where we may have to do an RMW operation on an
* encrypted file. This can also be used for direct I/O writes.
@@ -102,7 +84,6 @@ ssize_t netfs_unbuffered_write_iter_locked(struct kiocb *iocb, struct iov_iter *
if (async)
wreq->iocb = iocb;
wreq->len = iov_iter_count(&wreq->buffer.iter);
- wreq->cleanup = netfs_cleanup_dio_write;
ret = netfs_unbuffered_write(wreq, is_sync_kiocb(iocb), wreq->len);
if (ret < 0) {
_debug("begin = %zd", ret);