What does HRESULT 0xC038003D (ERROR_VOLMGR_PLEX_REGENERATING) mean?

 
Could be also:
ConstantTypeOS
STATUS_VOLMGR_PLEX_REGENERATINGNTSTATUSWindows
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 fieldValue
Closest comparisonERROR_VOLMGR_PLEX_IN_SYNC
Owning objectvolume plex descriptor, layout type and regeneration state
Rejected invariantthe plex is already being rebuilt from another active copy and rejects a competing maintenance request
Identity and generationvolume ID, plex ordinal, plex type, member array, active/inactive state, health status and current regeneration job
Narrow experimentstart 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

  1. serialize the failing request and the enumeration from which its identifiers came while diagnosing this result.
  2. 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.
  3. 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.
  4. 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_SYNC path 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


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