| Previous | Next |
| ERROR_VOLMGR_PLEX_MISSING | ERROR_VOLMGR_PLEX_TYPE_INVALID |
ERROR_VOLMGR_PLEX_REGENERATING
Identify the owner before touching the layout: volmgr plex regenerating
The practical meaning of ERROR_VOLMGR_PLEX_REGENERATING (0xC038003D) is tied to volume plex descriptor, layout type and regeneration state: the plex is already being rebuilt from another active copy and rejects a competing maintenance request. The result does not, by itself, prove file-system corruption or physical-media failure.
Dynamic volumes are represented as packs containing disks and volumes; each volume has one or more plexes, and each plex is assembled from members and extents. Indices and counts are relative to the submitted layout generation, while configuration logs are replicated across participating dynamic disks for it. This object model determines which identifiers, counts and ownership state are meaningful.
Keep the first result attached to its request parameters and object generation for it. Cleanup failures or a later drive-letter change are secondary evidence, not replacements for the original boundary.
Minimum diagnostic set
| Storage diagnostic field | Value |
|---|---|
| Closest comparison | ERROR_VOLMGR_PLEX_IN_SYNC |
| Owning object | volume plex descriptor, layout type and regeneration state |
| Rejected invariant | the plex is already being rebuilt from another active copy and rejects a competing maintenance request |
| Identity and generation | volume ID, plex ordinal, plex type, member array, active/inactive state, health status and current regeneration job |
| Narrow experiment | start one rebuild, confirm its job identity and progress, issue the second request, then retry after the first job completes |
Do not overwrite this result with a close, detach or rollback error. Preserve the causal order so the original storage contract remains visible.
Reproduce without destructive cleanup
- serialize the failing request and the enumeration from which its identifiers came while diagnosing this result.
- Preserve volume ID, plex ordinal, plex type, member array, active/inactive state, health status and current regeneration job while every handle is still valid for it.
- Repeat the operation using this controlled change: start one rebuild, confirm its job identity and progress, issue the second request, then retry after the first job completes for it.
- Close and reacquire the relevant objects, then run once more to test lifecycle correctness after this result.
The distinction from ERROR_VOLMGR_PLEX_IN_SYNC is operational. The decisive condition is the plex is already being rebuilt from another active copy and rejects a competing maintenance request; log the neighboring code separately so capability, identity and state are not conflated.
Mechanism-specific note
Regeneration has its own asynchronous job lifetime. Capture the job or task identity, source copy, target member, progress and last error for it. Starting a second job can compete for the same extents and obscures whether the first operation is progressing, paused or blocked on media I/O while diagnosing this result.
Restore the contract
Wait for the owning job or transaction to reach a terminal state, then refresh all identifiers before issuing a single retry for it. Apply the change through the supported storage API, then close and reacquire affected objects before retrying.
- the first retry uses newly enumerated identifiers rather than cached handles.
- The durable metadata or provider state agrees with the success returned after it.
- A second run after close/reopen does not recreate the rejected the condition.
- the nearby
ERROR_VOLMGR_PLEX_IN_SYNCpath remains separately testable and separately logged.
Do not use it as a reason to edit dynamic-disk sectors, VHDX metadata, RCT sidecars or snapshot support files directly. Unsupported edits can turn a recoverable state mismatch into persistent corruption for it.
Technical references
- Microsoft: COM error codes for VOLMGR, VHD and SDIAG — use this source to verify volmgr state and parameters for it.
- Microsoft: Virtual Disk Service object model — documents the supported management path relevant to it.
- Microsoft: Pack object — defines the volmgr objects used to interpret it.
- Microsoft: Virtual Disk Service common return codes — primary API or object-model reference for the boundary.
Looking for a different code? Search another status or error code.