From ffd098d8bbdcbcc6109aaa939c67bc6e9b306e42 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 30 Jun 2019 09:15:48 +0200 Subject: [PATCH] smbd: Set SHARE_MODE_HAS_READ_LEASE when granting a read lease Lazy update of the flag: Whenever we add a read lease, we have to set the flag. Nobody except contend_level2_oplocks_begin will remove that flag again, as this would mean a full lease traverse when removing one. And contend_level2_oplocks_begin traverses the leases anyway Signed-off-by: Volker Lendecke Reviewed-by: Ralph Boehme --- source3/smbd/open.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source3/smbd/open.c b/source3/smbd/open.c index b86559ec417..a46e42482f7 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -2355,6 +2355,10 @@ static NTSTATUS grant_fsp_oplock_type(struct smb_request *req, return NT_STATUS_NO_MEMORY; } + if (granted & SMB2_LEASE_READ) { + lck->data->flags |= SHARE_MODE_HAS_READ_LEASE; + } + ok = update_num_read_oplocks(fsp, lck); if (!ok) { del_share_mode(lck, fsp); -- 2.47.3