This is the series of patches that address few problems with the current code. Patch #1 adjusts credits properly for MTU credits if we didn't use all the credits taken for an operation. This prevents loosing credits in error paths. Patch #2 removes resetting credit number to 1 if server didn't grant us any credits for the compounding chain. The current code didn't follow the protocol correctly. Patch #3 fixes credits handling for compounded requests by taking one credit per part of the chain. All error paths that return credits back are fixed accordingly. Patch #4 fixes hiding EINTR error code returned after an interrupted attemp to send SMB packet through the network. Patch #5 removes wrong assumption that the server grants us one credit for a cancelled request and parse the actual response to get the credit number. Patch #6 moves process credits granted by the server in the demultiplex thread in order to avoid races with reconnects. Patch #7 addresses few problems in writeback code, in particular related to interrupted error code returned by the transport layer. Patches #1-4 as marked for stable. Reviews are welcome. Pavel Shilovsky (7): CIFS: Fix adjustment of credits for MTU requests CIFS: Do not set credits to 1 if the server didn't grant anything CIFS: Fix credit computation for compounded requests CIFS: Do not hide EINTR while sending network packets CIFS: Fix credits calculation for cancelled requests CIFS: Move credit processing to mid callbacks for SMB3 CIFS: Fix error paths in writeback code fs/cifs/cifsglob.h | 20 +++++++++ fs/cifs/cifssmb.c | 7 +-- fs/cifs/file.c | 29 ++++++++++--- fs/cifs/inode.c | 10 +++++ fs/cifs/smb2pdu.c | 8 +++- fs/cifs/transport.c | 122 +++++++++++++++++++++++++++++++++++++++------------- 6 files changed, 155 insertions(+), 41 deletions(-) -- 2.7.4