Skip to content

Block storage API error reference

Reference · Updated Sep 2026

Coming from another cloud?

▸AWS·EBS Errors

This Quake AI feature maps to AWS’s EBS Errors.

▸DigitalOcean·Volume Errors

This Quake AI feature maps to DigitalOcean’s Volume Errors.

Block storage API error reference

This page documents common error responses from the Block Storage API (Cinder), with a focus on state-transition conflicts, dependency issues during delete operations, and snapshot failures. Use this reference when volume operations return unexpected status codes or when volumes enter stuck states.

The current platform release supports Cinder microversion ceiling 3.70 (Antelope).

HTTP status codes#

StatusMeaningTypical causeRetryable?Next action
400 Bad RequestInvalid request parametersInvalid volume type, malformed size, invalid metadataNoCheck parameters against the Block Storage API reference
400 Bad RequestInvalid state transitionVolume in the wrong state for the requested operationConditionalCheck volume status; wait for the transition to complete, then retry
401 UnauthorizedAuthentication failedExpired tokenNoRe-issue your token: openstack token issue
403 ForbiddenPolicy or RBAC denialOperation requires administrator privileges (for example, volume type create)NoVerify your account can perform the operation; admin-only operations cannot run with a tenant credential
404 Not FoundVolume or snapshot does not existWrong ID, already deletedNoVerify: openstack volume list or openstack volume snapshot list
413 Payload Too LargeResource quota exceededVolume, snapshot, or backup quota overrunConditionalReduce usage or request a quota increase; check /v3/{project_id}/limits for current absolute and used values
429 Too Many RequestsAPI rate limit exceededToo many requests in a short time window (enforced at the gateway layer)YesWait and retry with exponential backoff. Check for a Retry-After header

Example error response#

JSON
{
  "overLimit": {
    "code": 413,
    "message": "VolumeLimitExceeded: Maximum number of volumes allowed (500) exceeded.",
    "retryAfter": 0
  }
}

The status code appears both as the HTTP status and as the code field inside the response body. The body wraps the error object under a top-level key that varies by error class:

StatusWrapper key
400badRequest
401error (carries a title field)
403forbidden
404itemNotFound
413overLimit (carries a retryAfter field)

Every error body wraps the error object under one of these keys, and the inner shape stays consistent (code, message, and any optional fields). For the convention across all Quake AI APIs, see Error response format.


Volume state machine#

Volumes follow a state machine. Operations are only valid from certain states. Understanding it prevents most state-transition errors.

Valid states and transitions#

Current stateValid operationsInvalid operations
creating(wait)Attach, detach, delete, extend, snapshot
availableAttach, delete, extend, snapshotDetach (not attached)
in-useDetach, snapshot, extend (if backend supports online extend)Attach (already attached), delete
attaching(wait)All operations except status check
detaching(wait)All operations except status check
extending(wait)All operations except status check
errorDelete, reset stateAttach, detach, snapshot, extend
error_deletingReset stateAll standard operations

On Cinder 3.70 (Antelope), delete and extend operations against a volume in an invalid state return HTTP 400 badRequest, not 409 Conflict. The response body names the required state:

JSON
{
  "badRequest": {
    "code": 400,
    "message": "Invalid volume: Volume status must be available or error or error_restoring or error_extending or error_managing and must not be migrating, attached, belong to a group, have snapshots, awaiting a transfer, or be disassociated from snapshots after volume transfer."
  }
}

Recovery from transitional states#

If a volume is stuck in attaching, detaching, or extending for more than 10 minutes, it is likely in a stale state. Reset it:

bash
openstack volume set --state available YOUR_VOLUME

If the volume had an attachment that no longer exists:

bash
openstack volume set --detached YOUR_VOLUME
openstack volume set --state available YOUR_VOLUME

Delete operation errors#

"Volume is in-use"#

Cause: The volume is attached to an instance.

Resolution:

  1. Check attachments:
bash
openstack volume show YOUR_VOLUME -c attachments
  1. Detach the volume:
bash
openstack server remove volume YOUR_INSTANCE YOUR_VOLUME
  1. Retry deletion.

"Volume has snapshots"#

Cause: The volume has dependent snapshots that must be deleted first.

Response: HTTP 400 badRequest. The message Invalid volume: Volume status must be available... lists have snapshots among the disallowed conditions.

Resolution:

  1. List snapshots:
bash
openstack volume snapshot list --volume YOUR_VOLUME
  1. Delete each snapshot:
bash
openstack volume snapshot delete SNAPSHOT_ID
  1. Retry volume deletion.

"Volume status must be available or error"#

Cause: The volume is in a transitional state (attaching, detaching, extending).

Response: HTTP 400 badRequest. The message Invalid volume: Volume status must be available or error... lists every state the delete operation allows.

Resolution:

  1. Wait for the current operation to complete.
  2. If the state is stale (more than 10 minutes), reset:
bash
openstack volume set --state available YOUR_VOLUME
  1. Retry deletion.

Attach and detach errors#

Attach fails with 409#

Cause: The volume is not in available state, or is already attached to another instance.

Diagnosis:

bash
openstack volume show YOUR_VOLUME -c status -c attachments

Resolution:

  • If status is in-use: detach from the current instance first, or use multiattach if the volume type supports it.
  • If status is a transitional state: wait for it to resolve.
  • If status is error: reset to available and retry.

Detach fails with 409#

Cause: The volume is not in in-use state, or the attachment record does not match the specified instance.

Diagnosis:

bash
openstack volume show YOUR_VOLUME -c status -c attachments

Resolution:

  • Verify the correct instance ID in the detach command.
  • If the instance no longer exists, use state reset:
bash
openstack volume set --detached YOUR_VOLUME
openstack volume set --state available YOUR_VOLUME

Snapshot errors#

Snapshot stuck in "creating"#

Cause: The source volume is in a transitional state, or the storage backend encountered an issue.

Resolution:

  1. Check source volume status:
bash
openstack volume show YOUR_VOLUME -c status
  1. If the source volume is healthy and the snapshot has been in creating for more than 10 minutes, delete and retry:
bash
openstack volume snapshot delete STUCK_SNAPSHOT
openstack volume snapshot create --volume YOUR_VOLUME NEW_SNAPSHOT_NAME
  1. For persistent failures, file a support ticket.

Snapshot quota exceeded#

bash
openstack quota show --usage

Delete old snapshots to free capacity before retrying.


When to escalate#

Escalate to support when:

  • A volume is stuck in a transitional state (attaching, detaching, extending) for more than 10 minutes and state reset does not resolve it
  • Snapshots remain in creating indefinitely despite a healthy source volume and available quota
  • openstack volume set --state fails or the volume reverts to an error state after reset
  • Delete operations fail with errors that do not reference known dependencies (attachments, snapshots)

Escalation-ready evidence checklist#

ItemCommand
Volume ID, status, and attachmentsopenstack volume show YOUR_VOLUME -c id -c status -c attachments
Snapshot ID and statusopenstack volume snapshot show YOUR_SNAPSHOT -c id -c status
Quota usageopenstack quota show --usage
Error responseFull error message from the CLI or API
TimestampUTC time when the error occurred

See also#

Was this page helpful?