]> git.hungrycats.org Git - linux/commitdiff
smb3: request handle caching when caching directories
authorSteve French <stfrench@microsoft.com>
Mon, 18 Nov 2024 18:19:46 +0000 (12:19 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Dec 2024 12:54:23 +0000 (13:54 +0100)
commit 9ed9d83a51a9636d367c796252409e7b2f4de4d4 upstream.

This client was only requesting READ caching, not READ and HANDLE caching
in the LeaseState on the open requests we send for directories.  To
delay closing a handle (e.g. for caching directory contents) we should
be requesting HANDLE as well as READ (as we already do for deferred
close of files).   See MS-SMB2 3.3.1.4 e.g.

Cc: stable@vger.kernel.org
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/smb/client/smb2ops.c

index b9e332443b0d90342ac04eca9026f3fca7a40fe4..295aa74b4c6948ab6ae8eba83d75ca97ea5f3e46 100644 (file)
@@ -4078,7 +4078,7 @@ map_oplock_to_lease(u8 oplock)
        if (oplock == SMB2_OPLOCK_LEVEL_EXCLUSIVE)
                return SMB2_LEASE_WRITE_CACHING_LE | SMB2_LEASE_READ_CACHING_LE;
        else if (oplock == SMB2_OPLOCK_LEVEL_II)
-               return SMB2_LEASE_READ_CACHING_LE;
+               return SMB2_LEASE_READ_CACHING_LE | SMB2_LEASE_HANDLE_CACHING_LE;
        else if (oplock == SMB2_OPLOCK_LEVEL_BATCH)
                return SMB2_LEASE_HANDLE_CACHING_LE | SMB2_LEASE_READ_CACHING_LE |
                       SMB2_LEASE_WRITE_CACHING_LE;