| Previous | Next |
| ERROR_TIERING_CANNOT_PIN_OBJECT | ERROR_NOT_A_TIERED_VOLUME |
ERROR_TIERING_FILE_IS_NOT_PINNED
Why this is narrower than a generic disk error: tiering file is not pinned
Windows returns ERROR_TIERING_FILE_IS_NOT_PINNED, value 0x80830008, at the tiering boundary. It means that an unpin or pin-state query targeted a file that has no explicit tier assignment for ERROR_TIERING_FILE_IS_NOT_PINNED. For ERROR_TIERING_FILE_IS_NOT_PINNED, preserve the exact handle and generation of file-to-tier placement metadata for the addressed volume before any rescan changes the evidence.
Storage tiering operates above a tiered Storage Spaces virtual disk and records desired placement separately from normal file allocation in the ERROR_TIERING_FILE_IS_NOT_PINNED path. Optimization may move data according to heat, whereas pinning expresses an explicit placement preference for a supported file or volume object while diagnosing ERROR_TIERING_FILE_IS_NOT_PINNED. For ERROR_TIERING_FILE_IS_NOT_PINNED, this object model determines which identifiers, counts and ownership state are meaningful for ERROR_TIERING_FILE_IS_NOT_PINNED.
Diagnosis of ERROR_TIERING_FILE_IS_NOT_PINNED should begin with the object model and generation current at the failure in the ERROR_TIERING_FILE_IS_NOT_PINNED path. A later successful enumeration may describe a replacement object and cannot retroactively validate the rejected request within the ERROR_TIERING_FILE_IS_NOT_PINNED workflow.
Storage facts that change the diagnosis
| Storage diagnostic field | Value for ERROR_TIERING_FILE_IS_NOT_PINNED |
|---|---|
| Closest comparison | ERROR_TIERING_CANNOT_PIN_OBJECT |
| Owning object | file-to-tier placement metadata for the addressed volume |
| Rejected invariant | an unpin or pin-state query targeted a file that has no explicit tier assignment |
| Identity and generation | volume GUID path, storage-space and tier IDs, file ID plus file-system identity, cluster owner node, optimization job state and requested pin target |
| Narrow experiment | apply the operation to a regular file on a verified tiered volume, then compare with the original object type and pin state |
- Correlate volume GUID path with the first
ERROR_TIERING_FILE_IS_NOT_PINNEDcall and its transaction or job identifier. - Export storage-space for
ERROR_TIERING_FILE_IS_NOT_PINNED; this is more useful than a drive letter or friendly name alone in the ERROR_TIERING_FILE_IS_NOT_PINNED path. - Verify tier IDs belongs to the same storage generation that produced
ERROR_TIERING_FILE_IS_NOT_PINNED. - For
ERROR_TIERING_FILE_IS_NOT_PINNED, preserve file ID plus file-system identity before a rescan; it anchors the failed object generation when ERROR_TIERING_FILE_IS_NOT_PINNED is returned. - Attach cluster owner node to the
ERROR_TIERING_FILE_IS_NOT_PINNEDincident so later cleanup cannot replace the original identity for the ERROR_TIERING_FILE_IS_NOT_PINNED request. - Record optimization job state at the instant
ERROR_TIERING_FILE_IS_NOT_PINNEDis returned, not after an automatic refresh. - Correlate requested pin target with the first
ERROR_TIERING_FILE_IS_NOT_PINNEDcall and its transaction or job identifier.
Do not overwrite ERROR_TIERING_FILE_IS_NOT_PINNED with a close, detach or rollback error. Preserve the causal order so the original storage contract remains visible within the ERROR_TIERING_FILE_IS_NOT_PINNED workflow.
A/B test for this HRESULT
- For
ERROR_TIERING_FILE_IS_NOT_PINNED, serialize the failing request and the enumeration from which its identifiers came within the ERROR_TIERING_FILE_IS_NOT_PINNED workflow. - 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 in the ERROR_TIERING_FILE_IS_NOT_PINNED path.
- Repeat the operation using this controlled change: apply the operation to a regular file on a verified tiered volume, then compare with the original object type and pin state when ERROR_TIERING_FILE_IS_NOT_PINNED is returned.
- Close and reacquire the relevant objects, then run once more to test lifecycle correctness after
ERROR_TIERING_FILE_IS_NOT_PINNED.
Use ERROR_TIERING_CANNOT_PIN_OBJECT as the nearest comparison. ERROR_TIERING_FILE_IS_NOT_PINNED is specific to an unpin or pin-state query targeted a file that has no explicit tier assignment; the neighboring result belongs to another validation or lifecycle branch for ERROR_TIERING_FILE_IS_NOT_PINNED. Keeping both names prevents a generic storage label from hiding the actual owner within the ERROR_TIERING_FILE_IS_NOT_PINNED workflow.
Mechanism-specific note for ERROR_TIERING_FILE_IS_NOT_PINNED
The file can still reside on a tier due to heat-based optimization even though it has no explicit pin when ERROR_TIERING_FILE_IS_NOT_PINNED is returned. Query desired placement separately from current physical placement in the ERROR_TIERING_FILE_IS_NOT_PINNED path. An unpin workflow should treat this state as idempotent rather than moving data or inventing a pin record to remove while diagnosing ERROR_TIERING_FILE_IS_NOT_PINNED.
Corrective action and regression check
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_TIERING_FILE_IS_NOT_PINNED. After correcting ERROR_TIERING_FILE_IS_NOT_PINNED, reopen the pack, volume, tier, snapshot or virtual disk so no cached generation participates in the validation run for the ERROR_TIERING_FILE_IS_NOT_PINNED request.
- The original
ERROR_TIERING_FILE_IS_NOT_PINNEDrequest now reaches success or a documented later status with the intended layout and access mode when ERROR_TIERING_FILE_IS_NOT_PINNED is returned. - A new enumeration reports internally consistent IDs, counts, geometry and ownership for the object corrected after
ERROR_TIERING_FILE_IS_NOT_PINNED. - The passing state survives the lifecycle transition relevant to
ERROR_TIERING_FILE_IS_NOT_PINNED, such as reopen, remount, owner change or detach/attach in the ERROR_TIERING_FILE_IS_NOT_PINNED path. - The application still distinguishes
ERROR_TIERING_FILE_IS_NOT_PINNEDfromERROR_TIERING_CANNOT_PIN_OBJECTand has no unbounded retry loop.
Do not use ERROR_TIERING_FILE_IS_NOT_PINNED as a reason to edit dynamic-disk sectors, VHDX metadata, RCT sidecars or snapshot support files directly for ERROR_TIERING_FILE_IS_NOT_PINNED. Unsupported edits can turn a recoverable state mismatch into persistent corruption for ERROR_TIERING_FILE_IS_NOT_PINNED.
Technical references
- Microsoft: MSFT_FileStorageTier class — primary API or object-model reference for the
ERROR_TIERING_FILE_IS_NOT_PINNEDboundary. - Microsoft: Set method of MSFT_FileStorageTier — use this source to verify tiering state and parameters for
ERROR_TIERING_FILE_IS_NOT_PINNED. - Microsoft: Optimize-Volume — documents the supported management path relevant to
ERROR_TIERING_FILE_IS_NOT_PINNED. - Microsoft: fsutil tiering — defines the tiering objects used to interpret
ERROR_TIERING_FILE_IS_NOT_PINNED.
Looking for a different code? Search another status or error code.