1
0
Fork 0
mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-01-24 01:09:38 -05:00
linux/fs/cifs
Ronnie Sahlberg f5d0f921ea cifs: destage any unwritten data to the server before calling copychunk_write
because the copychunk_write might cover a region of the file that has not yet
been sent to the server and thus fail.

A simple way to reproduce this is:
truncate -s 0 /mnt/testfile; strace -f -o x -ttT xfs_io -i -f -c 'pwrite 0k 128k' -c 'fcollapse 16k 24k' /mnt/testfile

the issue is that the 'pwrite 0k 128k' becomes rearranged on the wire with
the 'fcollapse 16k 24k' due to write-back caching.

fcollapse is implemented in cifs.ko as a SMB2 IOCTL(COPYCHUNK_WRITE) call
and it will fail serverside since the file is still 0b in size serverside
until the writes have been destaged.
To avoid this we must ensure that we destage any unwritten data to the
server before calling COPYCHUNK_WRITE.

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1997373
Reported-by: Xiaoli Feng <xifeng@redhat.com>
Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2022-04-20 22:54:54 -05:00
..
asn1.c
cifs_debug.c smb3: cleanup and clarify status of tree connections 2022-03-28 17:07:30 -05:00
cifs_debug.h
cifs_dfs_ref.c
cifs_fs_sb.h
cifs_ioctl.h
cifs_spnego.c
cifs_spnego.h
cifs_spnego_negtokeninit.asn1
cifs_swn.c cifs: use a different reconnect helper for non-cifsd threads 2022-03-18 23:12:03 -05:00
cifs_swn.h
cifs_unicode.c
cifs_unicode.h
cifs_uniupr.h
cifsacl.c cifs: modefromsids must add an ACE for authenticated users 2022-02-14 09:55:51 -06:00
cifsacl.h
cifsencrypt.c
cifsfs.c cifs: verify that tcon is valid before dereference in cifs_kill_sb 2022-04-14 00:07:36 -05:00
cifsfs.h cifs: update internal module number 2022-04-04 22:40:14 -05:00
cifsglob.h 14 fixes to cifs client and to smbfs_common code 2022-04-01 14:31:57 -07:00
cifspdu.h smb3: move defines for query info and query fsinfo to smbfs_common 2022-03-26 23:09:51 -05:00
cifsproto.h cifs: use a different reconnect helper for non-cifsd threads 2022-03-18 23:12:03 -05:00
cifsroot.c
cifssmb.c 14 fixes to cifs client and to smbfs_common code 2022-04-01 14:31:57 -07:00
connect.c cifs: use correct lock type in cifs_reconnect() 2022-04-20 22:54:39 -05:00
dfs_cache.c cifs: fix NULL ptr dereference in refresh_mounts() 2022-04-20 22:54:17 -05:00
dfs_cache.h
dir.c cifs: Support fscache indexing rewrite 2022-01-19 11:21:08 -06:00
dns_resolve.c
dns_resolve.h
export.c
file.c 14 fixes to cifs client and to smbfs_common code 2022-04-01 14:31:57 -07:00
fs_context.c smb3: fix snapshot mount option 2022-02-13 14:56:16 -06:00
fs_context.h
fscache.c netfs: Add a netfs inode context 2022-03-18 09:29:05 +00:00
fscache.h netfs: Add a netfs inode context 2022-03-18 09:29:05 +00:00
inode.c fs: Remove ->readpages address space operation 2022-04-01 13:45:33 -04:00
ioctl.c
Kconfig cifs: Support fscache indexing rewrite 2022-01-19 11:21:08 -06:00
link.c cifs: potential buffer overflow in handling symlinks 2022-04-13 12:00:49 -05:00
Makefile cifs: Support fscache indexing rewrite 2022-01-19 11:21:08 -06:00
misc.c smb3: cleanup and clarify status of tree connections 2022-03-28 17:07:30 -05:00
netlink.c
netlink.h
netmisc.c cifs: fix potential race with cifsd thread 2022-04-04 12:01:22 -05:00
nterr.c
nterr.h
ntlmssp.h treewide: Replace zero-length arrays with flexible-array members 2022-02-17 07:00:39 -06:00
readdir.c
rfc1002pdu.h
sess.c cifs: fix confusing unneeded warning message on smb2.1 and earlier 2022-02-16 17:16:49 -06:00
smb1ops.c cifs: use a different reconnect helper for non-cifsd threads 2022-03-18 23:12:03 -05:00
smb2file.c
smb2glob.h smb3: move defines for ioctl protocol header and SMB2 sizes to smbfs_common 2022-03-26 23:09:20 -05:00
smb2inode.c
smb2maperror.c
smb2misc.c cifs: remove check of list iterator against head past the loop body 2022-04-04 12:01:22 -05:00
smb2ops.c cifs: destage any unwritten data to the server before calling copychunk_write 2022-04-20 22:54:54 -05:00
smb2pdu.c smb3: cleanup and clarify status of tree connections 2022-03-28 17:07:30 -05:00
smb2pdu.h smb3: fix ksmbd bigendian bug in oplock break, and move its struct to smbfs_common 2022-03-31 09:38:53 -05:00
smb2proto.h cifs: convert the path to utf16 in smb2_query_info_compound 2022-03-23 15:17:22 -05:00
smb2status.h
smb2transport.c cifs: protect all accesses to chan_* with chan_lock 2022-01-19 11:10:54 -06:00
smbdirect.c
smbdirect.h
smbencrypt.c
smberr.h
trace.c
trace.h cifs: Split the smb3_add_credits tracepoint 2022-04-08 21:25:38 -05:00
transport.c cifs: Use kzalloc instead of kmalloc/memset 2022-04-18 10:22:57 -05:00
unc.c
winucase.c
xattr.c cifs: fix set of group SID via NTSD xattrs 2022-02-13 14:56:34 -06:00