What does HRESULT 0xC0380043 (ERROR_VOLMGR_TRANSACTION_IN_PROGRESS) mean?

 
Could be also:
ConstantTypeOS
STATUS_VOLMGR_TRANSACTION_IN_PROGRESSNTSTATUSWindows
Previous Next
ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE

ERROR_VOLMGR_TRANSACTION_IN_PROGRESS

Identify the owner before touching the layout: volmgr transaction in progress

ERROR_VOLMGR_TRANSACTION_IN_PROGRESS (0xC0380043) is emitted by the volmgr path when a metadata transaction currently owns the pack and prevents a second layout mutation from starting. The deciding object for this HRESULT is kernel volume-manager layout transaction and VM_VOLUME_LAYOUT input, so the first investigation belongs there rather than in a generic “disk failure” bucket.

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 for this HRESULT. Indices and counts are relative to the submitted layout generation, while configuration logs are replicated across participating dynamic disks. This object model determines which identifiers, counts and ownership state are meaningful.

A useful record contains more than the final UI symptom: retain the first failing call, target identity, topology and state transition before management software rescans the disks for this HRESULT.

Minimum diagnostic set

Storage diagnostic fieldValue
Owning objectkernel volume-manager layout transaction and VM_VOLUME_LAYOUT input
Rejected invarianta metadata transaction currently owns the pack and prevents a second layout mutation from starting
Identity and generationpack and volume IDs, input structure version and sizes, transaction ID, disk-layout snapshot before the call and the first kernel storage event
Narrow experimenthold one layout transaction open in a test harness, issue the competing mutation, then retry after an explicit commit or rollback
Closest comparisonERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE

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. Before changing state for this HRESULT, freeze the failing generation and save pack and volume IDs, input structure version and sizes, transaction ID, disk-layout snapshot before the call and the first kernel storage event for this HRESULT.
  2. Exercise this exact comparison for this HRESULT: hold one layout transaction open in a test harness, issue the competing mutation, then retry after an explicit commit or rollback.
  3. During the result comparison, keep image bytes, unrelated disks, provider policy and cluster topology fixed while diagnosing this result.
  4. After the test, record the next return value and the durable object state; crossing the boundary should expose a later result rather than silently retrying.

The distinction from ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE is operational. The decisive condition is a metadata transaction currently owns the pack and prevents a second layout mutation from starting; log the neighboring code separately so capability, identity and state are not conflated for this HRESULT.

Mechanism-specific note

Keep the exact storage identity and state transition associated with this HRESULT. A successful rescan does not prove the original operation was valid, because it may have replaced the object generation that failed.

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 this HRESULT. The result repair is incomplete until a fresh enumeration and new handle observe the corrected state.

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

Avoid broad rescans, forced failovers and metadata deletion until identities and generations are captured. Those actions can make a stale request appear to heal without fixing its caller.

Technical references


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