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

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

_______________________________________________
cifs-protocol mailing list
cifs-protocol@lists.samba.org
https://lists.samba.org/mailman/listinfo/cifs-protocol

Reply via email to