Algorithm for Change Notifications in an Object Store

The server MUST implement an algorithm that monitors for changes on an object store. The effect of this algorithm MUST be identical to that used to offer the behavior specified in [CIFS] section 4.3.7. The algorithm MUST meet the following conditions:

  • If a change notification request is pending on a directory AND a change occurs to the directory contents matching the events to be monitored as specified in CompletionFilter, the server MUST copy the results into the buffer of the Change Notification response. The server MAY choose to aggregate one or more changes indicated by the underlying object store into a single response. The server MUST construct a SMB2_CHANGE_NOTIFY_Response as specified in section 2.2.36. The server MUST then return the results to the client.
  • The server SHOULD try to fit in as many events that match the CompletionFilter of the request as possible before completing the request.
  • If a client issues multiple change notification requests on the same open to a directory, the server MUST queue the requests and complete them on a First In, First Out (FIFO) basis when changes are indicated by the underlying object store.
  • If the client requested that an entire tree be watched, the server MUST monitor all objects beneath the directory on which the operation was issued, instead of simply the immediate children of that directory.
  • Change notification information that is returned to the user MUST conform to the syntax specified in section