linux/fs/cifs
Ross Lagerwall 7d414f396c cifs: Limit the overall credit acquired
The kernel client requests 2 credits for many operations even though
they only use 1 credit (presumably to build up a buffer of credit).
Some servers seem to give the client as much credit as is requested.  In
this case, the amount of credit the client has continues increasing to
the point where (server->credits * MAX_BUFFER_SIZE) overflows in
smb2_wait_mtu_credits().

Fix this by throttling the credit requests if an set limit is reached.
For async requests where the credit charge may be > 1, request as much
credit as what is charged.
The limit is chosen somewhat arbitrarily. The Windows client
defaults to 128 credits, the Windows server allows clients up to
512 credits (or 8192 for Windows 2016), and the NetApp server
(and at least one other) does not limit clients at all.
Choose a high enough value such that the client shouldn't limit
performance.

This behavior was seen with a NetApp filer (NetApp Release 9.0RC2).

Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
CC: Stable <stable@vger.kernel.org>
Signed-off-by: Steve French <smfrench@gmail.com>
2016-10-12 12:08:31 -05:00
..
asn1.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
cache.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
cifs_debug.c Display number of credits available 2016-10-12 12:08:31 -05:00
cifs_debug.h lib: update single-char callers of strtobool() 2016-03-17 15:09:34 -07:00
cifs_dfs_ref.c cifs: remove any preceding delimiter from prefix_path 2016-05-17 14:09:33 -05:00
cifs_fs_sb.h fs/cifs: make share unaccessible at root level mountable 2016-07-27 22:50:55 -05:00
cifs_ioctl.h Add way to query server fs info for smb3 2015-08-20 10:19:25 -05:00
cifs_spnego.c cifs: Create dedicated keyring for spnego operations 2016-05-19 21:56:30 -05:00
cifs_spnego.h
cifs_unicode.c File names with trailing period or space need special case conversion 2016-06-24 12:05:52 -05:00
cifs_unicode.h File names with trailing period or space need special case conversion 2016-06-24 12:05:52 -05:00
cifs_uniupr.h
cifsacl.c KEYS: Add a facility to restrict new links into a keyring 2016-04-11 22:37:37 +01:00
cifsacl.h cifs: fix SID binary to string conversion 2012-12-11 11:48:49 -06:00
cifsencrypt.c cifs: fix crash due to race in hmac(md5) handling 2016-07-20 03:03:27 -05:00
cifsfs.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2016-10-10 20:16:43 -07:00
cifsfs.h cifs: don't use ->d_time 2016-09-16 12:44:21 +02:00
cifsglob.h cifs: stuff the fl_owner into "pid" field in the lock request 2016-06-23 23:44:44 -05:00
cifspdu.h Add way to query server fs info for smb3 2015-08-20 10:19:25 -05:00
cifsproto.h cifs: get rid of unused arguments of CIFSSMBWrite() 2016-09-27 21:54:53 -04:00
cifssmb.c cifs: get rid of unused arguments of CIFSSMBWrite() 2016-09-27 21:54:53 -04:00
connect.c Compare prepaths when comparing superblocks 2016-09-09 23:58:06 -05:00
dir.c cifs: don't use ->d_time 2016-09-16 12:44:21 +02:00
dns_resolve.c cifs: fix composing of mount options for DFS referrals 2013-05-24 13:08:31 -05:00
dns_resolve.h
export.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
file.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2016-10-10 20:16:43 -07:00
fscache.c NFS client updates for Linux 3.13 2013-11-08 05:57:46 +09:00
fscache.h CIFS: FS-Cache: Uncache unread pages in cifs_readpages() before freeing them 2013-09-18 10:17:03 -05:00
inode.c Merge remote-tracking branch 'jk/vfs' into work.misc 2016-10-08 11:06:08 -04:00
ioctl.c vfs: pull btrfs clone API to vfs layer 2015-12-07 23:11:33 -05:00
Kconfig Allow parsing vers=3.11 on cifs mount 2015-06-27 20:23:32 -07:00
link.c cifs: get rid of unused arguments of CIFSSMBWrite() 2016-09-27 21:54:53 -04:00
Makefile cifs: Switch to generic xattr handlers 2016-04-23 15:33:03 -04:00
misc.c Prepare for encryption support (first part). Add decryption and encryption key generation. Thanks to Metze for helping with this. 2016-01-14 14:29:42 -06:00
netmisc.c Fix signed/unsigned pointer warning 2014-12-14 14:55:57 -06:00
nterr.c
nterr.h
ntlmssp.h cifs: dynamic allocation of ntlmssp blob 2016-06-23 23:45:07 -05:00
readdir.c cifs: Use file_dentry() 2016-05-17 14:09:33 -05:00
rfc1002pdu.h
sess.c cifs: check hash calculating succeeded 2016-06-23 23:45:17 -05:00
smb1ops.c Fix that several functions handle incorrect value of mapchars 2015-05-10 19:56:35 -05:00
smb2file.c Add resilienthandles mount parm 2015-11-03 10:10:36 -06:00
smb2glob.h cifs: Limit the overall credit acquired 2016-10-12 12:08:31 -05:00
smb2inode.c remove directory incorrectly tries to set delete on close on non-empty directories 2016-05-17 14:09:44 -05:00
smb2maperror.c Fix problem recognizing symlinks 2014-10-02 14:10:04 -05:00
smb2misc.c Prepare for encryption support (first part). Add decryption and encryption key generation. Thanks to Metze for helping with this. 2016-01-14 14:29:42 -06:00
smb2ops.c CIFS: Fix a possible invalid memory access in smb2_query_symlink() 2016-07-27 22:55:56 -05:00
smb2pdu.c cifs: Limit the overall credit acquired 2016-10-12 12:08:31 -05:00
smb2pdu.h Prepare for encryption support (first part). Add decryption and encryption key generation. Thanks to Metze for helping with this. 2016-01-14 14:29:42 -06:00
smb2proto.h remove directory incorrectly tries to set delete on close on non-empty directories 2016-05-17 14:09:44 -05:00
smb2status.h
smb2transport.c cifs: merge the hash calculation helpers 2016-03-28 14:05:27 -04:00
smbencrypt.c cifs: Use skcipher 2016-01-27 20:35:53 +08:00
smberr.h
smbfsctl.h [SMB3] Send durable handle v2 contexts when use of persistent handles required 2015-11-03 09:26:27 -06:00
transport.c cifs: quit playing games with draining iovecs 2016-03-28 14:05:32 -04:00
winucase.c [CIFS] quiet sparse compile warning 2013-09-08 14:54:24 -05:00
xattr.c Add way to query creation time of file via cifs xattr 2016-10-12 12:08:31 -05:00