[Samba] oplocks, kernel oplocks, kernel share modes, .. - how it all works?

Rowland Penny rpenny at samba.org
Tue Jan 24 21:32:09 UTC 2023



On 24/01/2023 21:19, Ralph Boehme via samba wrote:
> On 1/24/23 22:12, Jeremy Allison wrote:
>> On Wed, Jan 25, 2023 at 12:00:09AM +0300, Michael Tokarev wrote:
>>> 24.01.2023 23:23, Jeremy Allison пишет:
>>> ..
>>>> which means you end up with LEASE_OPLOCK, granted=SMB2_LEASE_NONE
>>>> which is what you see with smbstatus.
>>>>
>>>> If you turn on kernel oplocks = yes, I think you must also
>>>> set smb2 leases = no in order for this to work.
>>>
>>> I've set smb2 leases = no (to global). I don't see these LEASE() 
>>> anymore,
>>> I see "NONE", "BATCH" and "LEVEL_II" now, like in old good times :)
>>
>> Oh, very interesting. Something is wrong in our code then, as Ralph
>> already mentioned we have:
>>
>>          capabilities = 0;
>>          if (lp_host_msdfs()) {
>>                  capabilities |= SMB2_CAP_DFS;
>>          }
>>
>>          if (protocol >= PROTOCOL_SMB2_10 &&
>>              lp_smb2_leases() &&
>>              lp_oplocks(GLOBAL_SECTION_SNUM) &&
>>              !lp_kernel_oplocks(GLOBAL_SECTION_SNUM))
>>          {
>>                  capabilities |= SMB2_CAP_LEASING;
>>          }
>>
>> so setting "kernel oplocks = yes" should prevent SMB2_CAP_LEASING
>> being returned to the client. A wireshark trace when you remove
>> the "smb2 leases = no" line would be good to look at.
> 
> oh! That is the only place where we treat kernel oplocks as a global 
> option. The docs and the rest of the code allow this as a per share 
> option. Looks like we have a problem here.
> 

You could try asking the person who wrote that bit of the code, a 
certain Jeremy Allison ;-)

Rowland




More information about the samba mailing list