What does HRESULT 0x80830009 (ERROR_NOT_A_TIERED_VOLUME) mean?

 
Previous Next
ERROR_TIERING_FILE_IS_NOT_PINNED ERROR_ATTRIBUTE_NOT_PRESENT

ERROR_NOT_A_TIERED_VOLUME

Identify the owner before touching the layout: not a tiered volume

The practical meaning of ERROR_NOT_A_TIERED_VOLUME (0x80830009) is tied to file-to-tier placement metadata for the addressed volume: the volume is accessible, but its backing virtual disk has no active multi-tier layout for the requested operation within the ERROR_NOT_A_TIERED_VOLUME workflow. The ERROR_NOT_A_TIERED_VOLUME result does not, by itself, prove file-system corruption or physical-media failure when ERROR_NOT_A_TIERED_VOLUME is returned.

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

Diagnosis of ERROR_NOT_A_TIERED_VOLUME should begin with the object model and generation current at the failure when ERROR_NOT_A_TIERED_VOLUME is returned. A later successful enumeration may describe a replacement object and cannot retroactively validate the rejected request in the ERROR_NOT_A_TIERED_VOLUME path.

Minimum diagnostic set

Storage diagnostic fieldValue for ERROR_NOT_A_TIERED_VOLUME
Owning objectfile-to-tier placement metadata for the addressed volume
Rejected invariantthe volume is accessible, but its backing virtual disk has no active multi-tier layout for the requested operation
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
Closest comparisonERROR_TIERING_NOT_SUPPORTED_ON_VOLUME
  • Export volume GUID path for ERROR_NOT_A_TIERED_VOLUME; this is more useful than a drive letter or friendly name alone when ERROR_NOT_A_TIERED_VOLUME is returned.
  • Verify storage-space belongs to the same storage generation that produced ERROR_NOT_A_TIERED_VOLUME.
  • For ERROR_NOT_A_TIERED_VOLUME, preserve tier IDs before a rescan; it anchors the failed object generation in the ERROR_NOT_A_TIERED_VOLUME path.
  • Attach file ID plus file-system identity to the ERROR_NOT_A_TIERED_VOLUME incident so later cleanup cannot replace the original identity while diagnosing ERROR_NOT_A_TIERED_VOLUME.
  • Record cluster owner node at the instant ERROR_NOT_A_TIERED_VOLUME is returned, not after an automatic refresh.
  • Correlate optimization job state with the first ERROR_NOT_A_TIERED_VOLUME call and its transaction or job identifier.
  • Export requested pin target for ERROR_NOT_A_TIERED_VOLUME; this is more useful than a drive letter or friendly name alone within the ERROR_NOT_A_TIERED_VOLUME workflow.

Do not overwrite ERROR_NOT_A_TIERED_VOLUME with a close, detach or rollback error. Preserve the causal order so the original storage contract remains visible for the ERROR_NOT_A_TIERED_VOLUME request.

Reproduce without destructive cleanup

  1. Before changing state for ERROR_NOT_A_TIERED_VOLUME, freeze the failing generation and save 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 diagnosing ERROR_NOT_A_TIERED_VOLUME.
  2. Exercise this exact comparison for ERROR_NOT_A_TIERED_VOLUME: query the volume tier inventory and repeat the exact call on a known tiered Storage Spaces volume without changing the file or policy within the ERROR_NOT_A_TIERED_VOLUME workflow.
  3. During the ERROR_NOT_A_TIERED_VOLUME comparison, keep image bytes, unrelated disks, provider policy and cluster topology fixed within the ERROR_NOT_A_TIERED_VOLUME workflow.
  4. After the test, record the next return value and the durable object state; crossing the ERROR_NOT_A_TIERED_VOLUME boundary should expose a later result rather than silently retrying in the ERROR_NOT_A_TIERED_VOLUME path.

Use ERROR_TIERING_NOT_SUPPORTED_ON_VOLUME as the nearest comparison. ERROR_NOT_A_TIERED_VOLUME is specific to the volume is accessible, but its backing virtual disk has no active multi-tier layout for the requested operation; the neighboring result belongs to another validation or lifecycle branch for ERROR_NOT_A_TIERED_VOLUME. Keeping both names prevents a generic storage label from hiding the actual owner within the ERROR_NOT_A_TIERED_VOLUME workflow.

Mechanism-specific note for ERROR_NOT_A_TIERED_VOLUME

This result describes the configured layout, not a temporary provider outage when ERROR_NOT_A_TIERED_VOLUME is returned. Enumerate storage tiers associated with the virtual disk and map the volume to that disk when ERROR_NOT_A_TIERED_VOLUME is returned. If no tier relationship exists, the caller should use normal optimization or placement behavior rather than retrying a tier-only API while diagnosing ERROR_NOT_A_TIERED_VOLUME.

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 while diagnosing ERROR_NOT_A_TIERED_VOLUME. After correcting ERROR_NOT_A_TIERED_VOLUME, reopen the pack, volume, tier, snapshot or virtual disk so no cached generation participates in the validation run when ERROR_NOT_A_TIERED_VOLUME is returned.

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

Before responding to ERROR_NOT_A_TIERED_VOLUME with destructive cleanup, prove which object owns the failure within the ERROR_NOT_A_TIERED_VOLUME workflow. Changing every disk or provider at once prevents a meaningful regression test in the ERROR_NOT_A_TIERED_VOLUME path.

Technical references


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