]> 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>
Mon, 9 Dec 2024 09:32:52 +0000 (10:32 +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 ab6e79be2c15dd198c409d549aa74e18d60c1e6c..6645f147d57c29590dd3ae2053e76486acc0a1da 100644 (file)
@@ -4016,7 +4016,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;