I noticed that for SMB2 mounts (which use oplocks) or for mounts to ksmbd (which defaults to directory leases turned off, but oplocks turned on) that the open code can get confusing since there are two fields that are used for checking and saving and updating the oplock state but they don't appear to be consistent. struct cifsInodeInfo-->oplock and struct cifsFileInfo->oplock_level Any thoughts of the reason for having two fields, stored in different structures, to store the caching state? It is a little bit easier to follow with leases instead of oplocks. In the short term I am trying to understand/fix why with oplocks so many operations break oplocks unnecessarily (due to not reusing open handles) -- Thanks, Steve