Hi Obaid,ok, thanks, that explains one part of the behavioral difference compared to leases.
The more serious one is: isn't this violating MS-SMB2 3.3.5.9 Receiving an SMB2 CREATE Request footnote 300?
If Open.ClientGuid is not equal to the ClientGuid of the connection that received this request, Open.Lease.LeaseState is equal to RWH, or Open.OplockLevel is equal to SMB2_OPLOCK_LEVEL_BATCH, Windows-based servers will attempt to break the lease/oplock and return STATUS_PENDING to process the create request asynchronously. Otherwise, if Open.Lease.LeaseState does not include SMB2_LEASE_HANDLE_CACHING and Open.OplockLevel is not equal to SMB2_OPLOCK_LEVEL_BATCH, Windows-based servers return STATUS_FILE_NOT_AVAILABLE.So in my overall understanding, in this scenario could either directly fail with STATUS_FILE_NOT_AVAILABLE, or it could process request asynchronously and return STATUS_PENDING.
But just discarding the batch oplock and succeeding the contending open looks like a serious bug.
Thanks! -slow
OpenPGP_signature.asc
Description: OpenPGP digital signature
_______________________________________________ cifs-protocol mailing list cifs-protocol@lists.samba.org https://lists.samba.org/mailman/listinfo/cifs-protocol