diff mbox series

[2/3] cifs: Fix FALLOC_FL_INSERT_RANGE by setting i_size after EOF moved

Message ID 20231129165619.2339490-3-dhowells@redhat.com (mailing list archive)
State New
Headers show
Series cifs: Fixes for copy_file_range() and FALLOC_FL_INSERT/ZERO_RANGE | expand

Commit Message

David Howells Nov. 29, 2023, 4:56 p.m. UTC
Fix the cifs filesystem implementations of FALLOC_FL_INSERT_RANGE, in
smb3_insert_range(), to set i_size after extending the file on the server
and before we do the copy to open the gap (as we don't clean up the EOF
marker if the copy fails).

Fixes: 7fe6fe95b936 ("cifs: add FALLOC_FL_INSERT_RANGE support")
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Steve French <sfrench@samba.org>
cc: Paulo Alcantara <pc@manguebit.com>
cc: Shyam Prasad N <nspmangalore@gmail.com>
cc: Rohith Surabattula <rohiths.msft@gmail.com>
cc: Jeff Layton <jlayton@kernel.org>
cc: linux-cifs@vger.kernel.org
cc: linux-mm@kvack.org
---
 fs/smb/client/smb2ops.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Paulo Alcantara Nov. 29, 2023, 10:20 p.m. UTC | #1
David Howells <dhowells@redhat.com> writes:

> Fix the cifs filesystem implementations of FALLOC_FL_INSERT_RANGE, in
> smb3_insert_range(), to set i_size after extending the file on the server
> and before we do the copy to open the gap (as we don't clean up the EOF
> marker if the copy fails).
>
> Fixes: 7fe6fe95b936 ("cifs: add FALLOC_FL_INSERT_RANGE support")
> Signed-off-by: David Howells <dhowells@redhat.com>
> cc: Steve French <sfrench@samba.org>
> cc: Paulo Alcantara <pc@manguebit.com>
> cc: Shyam Prasad N <nspmangalore@gmail.com>
> cc: Rohith Surabattula <rohiths.msft@gmail.com>
> cc: Jeff Layton <jlayton@kernel.org>
> cc: linux-cifs@vger.kernel.org
> cc: linux-mm@kvack.org
> ---
>  fs/smb/client/smb2ops.c | 3 +++
>  1 file changed, 3 insertions(+)

Looks good,

Acked-by: Paulo Alcantara (SUSE) <pc@manguebit.com>
diff mbox series

Patch

diff --git a/fs/smb/client/smb2ops.c b/fs/smb/client/smb2ops.c
index 572d2c22a703..65a00c8b8494 100644
--- a/fs/smb/client/smb2ops.c
+++ b/fs/smb/client/smb2ops.c
@@ -3741,6 +3741,9 @@  static long smb3_insert_range(struct file *file, struct cifs_tcon *tcon,
 	if (rc < 0)
 		goto out_2;
 
+	truncate_setsize(inode, old_eof + len);
+	fscache_resize_cookie(cifs_inode_cookie(inode), i_size_read(inode));
+
 	rc = smb2_copychunk_range(xid, cfile, cfile, off, count, off + len);
 	if (rc < 0)
 		goto out_2;