3.2.4.2 Rules for Modifying the List of Storage Objects

A number of protocol message processing steps result in the server modifying its list of storage objects. Possible actions are as follows:

  • Add storage object—Done when a new storage object is created as a result of processing the protocol message.

  • Delete storage object—Done when a storage object is deleted as a result of processing the protocol message.

  • Modify storage object—Done when a storage object is modified as a result of processing the protocol message.

The following subsections list the changes made by the server to the list of storage objects for each of the protocol messages:

When making a change to the list of storage objects, the server MUST follow these rules:

  • When adding a storage object, the server MUST generate a unique identifier of type LdmObjectId for the object, and it MUST initialize the LastKnownState field of the object with a value at the server's discretion.

  • When updating a storage object, the server MUST increment the LastKnownState field of the object.

Any change made to a storage object in the list MUST be accompanied by sending appropriate notification messages to all clients that have registered with the server for receiving notifications via the message IVolumeClient::Initialize or IVolumeClient3::Initialize.

The following rules MUST be followed with respect to sending notifications.

  • When adding a storage object, the server MUST send an IDMNotify::ObjectsChanged notification with action LDMACTION_CREATED for the given storage object.

  • When deleting a storage object, the server MUST send an IDMNotify::ObjectsChanged notification with action LDMACTION_DELETE for the given storage object.

  • When modifying a storage object, the server MUST send an IDMNotify::ObjectsChanged notification with action LDMACTION_MODIFIED for the given storage object.

Unless otherwise specified in the following sections, changing the list of storage objects, the manipulation of the LastKnownState fields, and sending the notifications to clients MUST all be done by the server before returning the response to the client.