3.3.5.2.7 Granting OpLocks

If the message received is an open or create and includes a request for an OpLock, the following additional steps MUST be taken:

  • If the Server.Connection.OpLockSupport state variable is FALSE, then an OpLock MUST NOT be granted.

  • If the open or create is on a directory file, then an Oplock MUST NOT be granted.

  • If the file is not open by any other process and Server.Connection.OpLockSupport is TRUE, then the requested OpLock type MUST be granted.

  • If the file is open for read-only access by one or more other processes, and:

    • The open or create command specifies read-only access to the file;

    • The open or create command supports Level II OpLocks;

    • Server.Connection.OpLockSupport is true;

      Then a Level II OpLock MUST be granted.

  • Otherwise, an OpLock MUST NOT be granted.

See [FSBO] section 2.2, Granting OpLocks. For more information, see [MS-FSA], Server Requests an OpLock.

The server MUST also request that the underlying file system notify the server when the granted OpLock is broken. See [FSBO] section 2.3, Breaking OpLocks. For more information, see [MS-FSA], Server Acknowledges an OpLock Break.