What does HRESULT 0x80830002 (ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS) mean?

 
Previous Next
ERROR_TIERING_NOT_SUPPORTED_ON_VOLUME ERROR_TIERING_STORAGE_TIER_NOT_FOUND

ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS

Identify the owner before touching the layout: tiering volume dismount in progress

ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS (0x80830002) is emitted by the tiering path when tier metadata was requested while the volume was leaving the mounted state and its tier-management context was being torn down when ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS is returned. The deciding object for ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS is file-to-tier placement metadata for the addressed volume, so the first investigation belongs there rather than in a generic “disk failure” bucket in the ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS path.

Storage tiering operates above a tiered Storage Spaces virtual disk and records desired placement separately from normal file allocation within the ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS workflow. Optimization may move data according to heat, whereas pinning expresses an explicit placement preference for a supported file or volume object for ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS. For ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS, this object model determines which identifiers, counts and ownership state are meaningful when ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS is returned.

Diagnosis of ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS should begin with the object model and generation current at the failure for the ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS request. A later successful enumeration may describe a replacement object and cannot retroactively validate the rejected request for ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS.

Minimum diagnostic set

Storage diagnostic fieldValue for ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS
Closest comparisonERROR_TIERING_ALREADY_PROCESSING
Owning objectfile-to-tier placement metadata for the addressed volume
Rejected invarianttier metadata was requested while the volume was leaving the mounted state and its tier-management context was being torn down
Identity and generationvolume GUID path, storage-space and tier IDs, file ID plus file-system identity, cluster owner node, optimization job state and requested pin target
Narrow experimentquery the volume tier inventory and repeat the exact call on a known tiered Storage Spaces volume without changing the file or policy
  • Export volume GUID path for ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS; this is more useful than a drive letter or friendly name alone while diagnosing ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS.
  • Verify storage-space belongs to the same storage generation that produced ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS.
  • For ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS, preserve tier IDs before a rescan; it anchors the failed object generation while diagnosing ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS.
  • Attach file ID plus file-system identity to the ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS incident so later cleanup cannot replace the original identity when ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS is returned.
  • Record cluster owner node at the instant ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS is returned, not after an automatic refresh.
  • Correlate optimization job state with the first ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS call and its transaction or job identifier.
  • Export requested pin target for ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS; this is more useful than a drive letter or friendly name alone within the ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS workflow.

For ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS, keep this HRESULT as the primary result if rollback or cleanup reports another code; those later values describe recovery, not the first rejected invariant for the ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS request.

Reproduce without destructive cleanup

  1. For ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS, serialize the failing request and the enumeration from which its identifiers came while diagnosing ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS.
  2. Preserve volume GUID path, storage-space and tier IDs, file ID plus file-system identity, cluster owner node, optimization job state and requested pin target while every handle is still valid for ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS.
  3. Repeat the operation using this controlled change: query the volume tier inventory and repeat the exact call on a known tiered Storage Spaces volume without changing the file or policy for the ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS request.
  4. Close and reacquire the relevant objects, then run once more to test lifecycle correctness after ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS.

Use ERROR_TIERING_ALREADY_PROCESSING as the nearest comparison. ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS is specific to tier metadata was requested while the volume was leaving the mounted state and its tier-management context was being torn down; the neighboring result belongs to another validation or lifecycle branch within the ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS workflow. Keeping both names prevents a generic storage label from hiding the actual owner while diagnosing ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS.

Mechanism-specific note for ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS

Dismount invalidates the tier-management context and can race with background optimization in the ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS path. Capture mount-state transitions and the component initiating dismount while diagnosing ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS. Wait for remount and re-enumerate tiers; retaining the old volume or file handle across dismount is not a supported retry strategy when ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS is returned.

Restore the contract

Re-enumerate the volume, its storage tiers and the file object on the owner node; serialize optimization jobs and apply pinning only to supported objects on a live tiered volume when ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS is returned. The ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS repair is incomplete until a fresh enumeration and new handle observe the corrected state when ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS is returned.

  • For ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS, the first retry uses newly enumerated identifiers rather than cached handles within the ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS workflow.
  • The durable metadata or provider state agrees with the success returned after ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS.
  • A second run after close/reopen does not recreate the rejected ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS condition.
  • For ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS, the nearby ERROR_TIERING_ALREADY_PROCESSING path remains separately testable and separately logged.

Do not use ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS as a reason to edit dynamic-disk sectors, VHDX metadata, RCT sidecars or snapshot support files directly for ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS. Unsupported edits can turn a recoverable state mismatch into persistent corruption within the ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS workflow.

Technical references


Looking for a different code? Search another status or error code.