linux-stable/fs/cifs
Pavel Shilovsky 9e9210e578 CIFS: Properly process SMB3 lease breaks
[ Upstream commit 9bd4540836 ]

Currenly we doesn't assume that a server may break a lease
from RWH to RW which causes us setting a wrong lease state
on a file and thus mistakenly flushing data and byte-range
locks and purging cached data on the client. This leads to
performance degradation because subsequent IOs go directly
to the server.

Fix this by propagating new lease state and epoch values
to the oplock break handler through cifsFileInfo structure
and removing the use of cifsInodeInfo flags for that. It
allows to avoid some races of several lease/oplock breaks
using those flags in parallel.

Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-10-01 13:12:30 +02:00
..
asn1.c
cache.c fscache: remove unused ->now_uncached callback 2017-09-06 17:27:26 -07:00
cifs_debug.c smb3: allow stats which track session and share reconnects to be reset 2018-11-13 11:15:09 -08:00
cifs_debug.h lib: update single-char callers of strtobool() 2016-03-17 15:09:34 -07:00
cifs_dfs_ref.c cifs: use correct format characters 2019-04-05 22:31:28 +02:00
cifs_fs_sb.h cifs: Convert to separately allocated bdi 2017-04-20 12:09:55 -06:00
cifs_ioctl.h Enable previous version support 2016-10-13 19:48:11 -05:00
cifs_spnego.c smb3: on kerberos mount if server doesn't specify auth type use krb5 2018-11-13 11:15:09 -08:00
cifs_spnego.h
cifs_unicode.c fs/cifs: don't translate SFM_SLASH (U+F026) to backslash 2018-10-10 08:54:21 +02:00
cifs_unicode.h [SMB3] Remove ifdef since SMB3 (and later) now STRONGLY preferred 2017-07-08 18:57:07 -05:00
cifs_uniupr.h
cifsacl.c cifs: Fix mode output in debugging statements 2020-03-11 18:02:46 +01:00
cifsacl.h cifs: For SMB2 security informaion query, check for minimum sized security descriptor instead of sizeof FileAllInformation class 2018-06-26 08:06:31 +08:00
cifsencrypt.c CIFS: fix sha512 check in cifs_crypto_secmech_release 2018-04-24 09:36:27 +02:00
cifsfs.c cifs: don't dereference smb_file_target before null check 2018-11-27 16:10:46 +01:00
cifsfs.h Update version of cifs module 2017-09-17 23:10:48 -05:00
cifsglob.h CIFS: Properly process SMB3 lease breaks 2020-10-01 13:12:30 +02:00
cifspdu.h CIFS: move DFS response parsing out of SMB1 code 2017-03-01 22:26:10 -06:00
cifsproto.h cifs: Fix cifsInodeInfo lock_sem deadlock when reconnect occurs 2019-11-10 11:25:19 +01:00
cifssmb.c CIFS: Fix credits calculations for reads with errors 2019-01-31 08:13:44 +01:00
connect.c SMB3: Honor persistent/resilient handle flags for multiuser mounts 2020-07-09 09:36:32 +02:00
dir.c cifs_atomic_open(): fix double-put on late allocation failure 2020-03-20 10:54:16 +01:00
dns_resolve.c
dns_resolve.h
export.c
file.c CIFS: Properly process SMB3 lease breaks 2020-10-01 13:12:30 +02:00
fscache.c
fscache.h
inode.c Revert "cifs: Fix the target file was deleted when rename failed." 2020-07-29 07:42:56 +02:00
ioctl.c [SMB3] Remove ifdef since SMB3 (and later) now STRONGLY preferred 2017-07-08 18:57:07 -05:00
Kconfig cifs: allow disabling insecure dialects in the config 2019-01-26 09:37:07 +01:00
link.c smb3: don't request leases in symlink creation and query 2018-09-05 09:26:33 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
misc.c CIFS: Properly process SMB3 lease breaks 2020-10-01 13:12:30 +02:00
netmisc.c fs: cifs: mute -Wunused-const-variable message 2019-11-06 12:43:10 +01:00
nterr.c
nterr.h
ntlmssp.h cifs: dynamic allocation of ntlmssp blob 2016-06-23 23:45:07 -05:00
readdir.c cifs: check ntwrk_buf_start for NULL before dereferencing it 2019-02-12 19:46:08 +01:00
rfc1002pdu.h
sess.c cifs: check kmalloc before use 2018-09-05 09:26:33 +02:00
smb1ops.c CIFS: Properly process SMB3 lease breaks 2020-10-01 13:12:30 +02:00
smb2file.c cifs: Adjust indentation in smb2_open_file 2020-01-17 19:45:45 +01:00
smb2glob.h CIFS: Separate SMB2 header structure 2017-02-01 16:46:34 -06:00
smb2inode.c smb3: Do not send SMB3 SET_INFO if nothing changed 2018-09-05 09:26:33 +02:00
smb2maperror.c SMB3: retry on STATUS_INSUFFICIENT_RESOURCES instead of failing write 2019-06-25 11:36:54 +08:00
smb2misc.c CIFS: Properly process SMB3 lease breaks 2020-10-01 13:12:30 +02:00
smb2ops.c CIFS: Properly process SMB3 lease breaks 2020-10-01 13:12:30 +02:00
smb2pdu.c smb3: warn on confusing error scenario with sec=krb5 2020-08-21 09:48:16 +02:00
smb2pdu.h CIFS: Properly process SMB3 lease breaks 2020-10-01 13:12:30 +02:00
smb2proto.h CIFS: add sha512 secmech 2018-04-24 09:36:27 +02:00
smb2status.h
smb2transport.c cifs: Fix use after free of a mid_q_entry 2018-07-11 16:29:15 +02:00
smbencrypt.c CIFS: refactor crypto shash/sdesc allocation&free 2018-04-24 09:36:27 +02:00
smberr.h
smbfsctl.h
transport.c CIFS: Do not hide EINTR after sending network packets 2019-01-16 22:07:10 +01:00
winucase.c
xattr.c CIFS: fix max ea value size 2019-10-05 12:48:12 +02:00