]> git.baikalelectronics.ru Git - kernel.git/commit
CIFS: Fix oplock handling for SMB 2.1+ protocols
authorPavel Shilovsky <pshilov@microsoft.com>
Thu, 26 Sep 2019 19:31:20 +0000 (12:31 -0700)
committerSteve French <stfrench@microsoft.com>
Thu, 26 Sep 2019 21:42:44 +0000 (16:42 -0500)
commita618a0302ff33bfbc89cf0b6c6c8370f81bb74cb
treed0426c430d8d65db4760e5c8cf6380ce6bb95230
parent14bf023f82b3b9b9777128bace76e2e3e5ebddcc
CIFS: Fix oplock handling for SMB 2.1+ protocols

There may be situations when a server negotiates SMB 2.1
protocol version or higher but responds to a CREATE request
with an oplock rather than a lease.

Currently the client doesn't handle such a case correctly:
when another CREATE comes in the server sends an oplock
break to the initial CREATE and the client doesn't send
an ack back due to a wrong caching level being set (READ
instead of RWH). Missing an oplock break ack makes the
server wait until the break times out which dramatically
increases the latency of the second CREATE.

Fix this by properly detecting oplocks when using SMB 2.1
protocol version and higher.

Cc: <stable@vger.kernel.org>
Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
fs/cifs/smb2ops.c