3.2.4.4.1.13 IVolumeClient::FTBreakMirror (Opnum 16)

The FTBreakMirror method breaks a specified FT mirror set on basic disks into two independent partitions. This is a synchronous task.<53>

 HRESULT FTBreakMirror(
   [in] LdmObjectId volumeId,
   [in] hyper volumeLastKnownState,
   [in] boolean bForce,
   [out] TASK_INFO* tinfo
 );

volumeId: Specifies the OID of the FT mirror set to break.

volumeLastKnownState: Last known modification sequence number of the FT mirror set.

bForce: Boolean value that indicates whether to force removal of the drive letter from the FT mirror set.

Value

Meaning

FALSE

0

The method fails if an error occurs while the drive letter is being removed from the FT mirror set.

TRUE

1

Removal of the drive letter from the FT mirror set is forced.

tinfo: Pointer to a TASK_INFO structure that the client can use to track the request's progress.

Return Values: The method MUST return 0 or a nonerror HRESULT on success, or an implementation-specific nonzero error code on failure (as specified in [MS-ERREF] section 2.1; see also section 2.2.1 for HRESULT values predefined by the Disk Management Remote Protocol).

Upon receiving this message, the server MUST validate parameters:

  • Verify that the FT volume specified by volumeId is in the list of storage objects, and check whether volumeLastKnownState matches the LastKnownState field of the object. Verify that the FT volume is an FT mirror set.

  • Verify that tinfo is not NULL.

If parameter validation fails, the server MUST fail the operation immediately, returning an appropriate error as its response to the client.

Otherwise, the server MUST process the message as follows:

  1. Attempt to remove the drive letter from the FT volume specified by volumeId, as specified by the bForce parameter.

  2. If the removal is successful, or bForce is set to TRUE, break the FT volume into two independent partitions.<54>

  3. If the volume is successfully broken into two partitions, assign the original drive letter of the FT volume to the volume represented by the input volumeId parameter.

  4. Wait for this sequence of operations to either succeed or fail.

  5. Fill in the tinfo output parameter.

    TASK_INFO member

    Required for this operation

    TASK_INFO::id

    Required.

    TASK_INFO::storageId

    Not required.

    TASK_INFO::createTime

    Not required.<55>

    TASK_INFO::clientID

    Not required.<56>

    TASK_INFO::percentComplete

    Required for any task that returns REQ_IN_PROGRESS.

    TASK_INFO::status

    Required.

    TASK_INFO::type

    Required if PercentageComplete is being used.

    TASK_INFO::error

    Required.

    TASK_INFO::tflag

    Not required.<57>

  6. Return a response to the client containing tinfo and the status of the operation.

If the operation is successful, the server MUST make the following changes to the list of storage objects before returning the response:

  1. Modify the disks where the FT volume resided to account for the change of region allocation.

  2. Modify the disk region objects used by the FT volume to account for their transformation from members of an FT volume into partitions.

  3. Modify the drive letter object associated with the FT volume to account for the migration from the FT volume to one of the partitions that results from the breakup.

  4. Delete the file system object associated with the FT volume.

  5. Create the file system objects associated with the partitions that result from the call to break the mirror.<58>