ksmbd: set v2 lease version on lease upgrade
authorNamjae Jeon <linkinjeon@kernel.org>
Thu, 14 Dec 2023 23:33:11 +0000 (08:33 +0900)
committerSteve French <stfrench@microsoft.com>
Tue, 9 Jan 2024 18:52:32 +0000 (12:52 -0600)
If file opened with v2 lease is upgraded with v1 lease, smb server
should response v2 lease create context to client.
This patch fix smb2.lease.v2_epoch2 test failure.

This test case assumes the following scenario:
 1. smb2 create with v2 lease(R, LEASE1 key)
 2. smb server return smb2 create response with v2 lease context(R,
LEASE1 key, epoch + 1)
 3. smb2 create with v1 lease(RH, LEASE1 key)
 4. smb server return smb2 create response with v2 lease context(RH,
LEASE1 key, epoch + 2)

i.e. If same client(same lease key) try to open a file that is being
opened with v2 lease with v1 lease, smb server should return v2 lease.

Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Acked-by: Tom Talpey <tom@talpey.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/server/oplock.c

index 562b180459a1a82d9137c96a2832b85485561c7a..9a19d8b06c8c8007fe9c80a36eb3c472a0c7521b 100644 (file)
@@ -1036,6 +1036,7 @@ static void copy_lease(struct oplock_info *op1, struct oplock_info *op2)
        lease2->duration = lease1->duration;
        lease2->flags = lease1->flags;
        lease2->epoch = lease1->epoch++;
+       lease2->version = lease1->version;
 }
 
 static int add_lease_global_list(struct oplock_info *opinfo)