3.2.6.6 A New Volume is Discovered

During initialization, as defined in section 3.2.3, the client discovers volumes to be added to the ClientVolumeTable. The client MAY<14> also discover such volumes after initialization.

When a volume is added to the ClientVolumeTable, if there is no VolumeInformation associated with the volume, the VolumeInformation MUST<15> be initialized. The VolumeInformation for that volume MUST be initialized as follows:

  • The VolumeID field MUST be set to a GUID that is a valid VolumeID value. That is, the VolumeID field MUST be set to a value with a low statistical likelihood of being duplicated, as defined in section 1.1, such that it is unique across the volumes on the current machine, does not consist of all zeros, and has a low order bit of the first byte at zero.

  • The VolumeSecret field MUST be initialized to all zeros.

  • The VolumeSequenceNumber field MUST be initialized to zero.

  • The VolumeOwner field MUST be set to the MachineID of the current machine.

  • The VolumeTableQuotaExceeded field flag MUST be initialized to False.

  • The VolumeState field MUST be initialized to NotCreated, and the EnterNotOwnedTime field MUST be left unset.

Additionally, in this case, the client MUST clear the VolumeFileTable.

If, during initialization, the VolumeInformation associated with the volume does exist but the VolumeOwner field is not the current machine's MachineID, then the VolumeInformation requires an update. This situation can happen, for example, if a volume is physically moved between machines. The client MUST do the following:

  • The VolumeOwner field MUST be set to the current machine's MachineID.

  • If the VolumeState field is set to Owned, it MUST be updated to NotOwned, and the EnterNotOwnedTime field MUST be set to the current time.