NVME_STATUS_GENERIC_COMMAND_CODES列舉 (nvme.h)

包含值,指出與命令相關聯的狀態,該命令是跨許多不同類型的命令泛型。

這些狀態代碼屬於 NVME_STATUS_TYPE_GENERIC_COMMAND狀態代碼類型 ,而且當命令完成時,控制器會在 完成佇列專案中 張貼。 程序代碼表示完成佇列專案中的 Command 和提交佇列標識碼所指定的命令已完成。

Syntax

typedef enum {
  NVME_STATUS_SUCCESS_COMPLETION,
  NVME_STATUS_INVALID_COMMAND_OPCODE,
  NVME_STATUS_INVALID_FIELD_IN_COMMAND,
  NVME_STATUS_COMMAND_ID_CONFLICT,
  NVME_STATUS_DATA_TRANSFER_ERROR,
  NVME_STATUS_COMMAND_ABORTED_DUE_TO_POWER_LOSS_NOTIFICATION,
  NVME_STATUS_INTERNAL_DEVICE_ERROR,
  NVME_STATUS_COMMAND_ABORT_REQUESTED,
  NVME_STATUS_COMMAND_ABORTED_DUE_TO_SQ_DELETION,
  NVME_STATUS_COMMAND_ABORTED_DUE_TO_FAILED_FUSED_COMMAND,
  NVME_STATUS_COMMAND_ABORTED_DUE_TO_FAILED_MISSING_COMMAND,
  NVME_STATUS_INVALID_NAMESPACE_OR_FORMAT,
  NVME_STATUS_COMMAND_SEQUENCE_ERROR,
  NVME_STATUS_INVALID_SGL_LAST_SEGMENT_DESCR,
  NVME_STATUS_INVALID_NUMBER_OF_SGL_DESCR,
  NVME_STATUS_DATA_SGL_LENGTH_INVALID,
  NVME_STATUS_METADATA_SGL_LENGTH_INVALID,
  NVME_STATUS_SGL_DESCR_TYPE_INVALID,
  NVME_STATUS_INVALID_USE_OF_CONTROLLER_MEMORY_BUFFER,
  NVME_STATUS_PRP_OFFSET_INVALID,
  NVME_STATUS_ATOMIC_WRITE_UNIT_EXCEEDED,
  NVME_STATUS_OPERATION_DENIED,
  NVME_STATUS_SGL_OFFSET_INVALID,
  NVME_STATUS_RESERVED,
  NVME_STATUS_HOST_IDENTIFIER_INCONSISTENT_FORMAT,
  NVME_STATUS_KEEP_ALIVE_TIMEOUT_EXPIRED,
  NVME_STATUS_KEEP_ALIVE_TIMEOUT_INVALID,
  NVME_STATUS_COMMAND_ABORTED_DUE_TO_PREEMPT_ABORT,
  NVME_STATUS_SANITIZE_FAILED,
  NVME_STATUS_SANITIZE_IN_PROGRESS,
  NVME_STATUS_SGL_DATA_BLOCK_GRANULARITY_INVALID,
  NVME_STATUS_DIRECTIVE_TYPE_INVALID,
  NVME_STATUS_DIRECTIVE_ID_INVALID,
  NVME_STATUS_NVM_LBA_OUT_OF_RANGE,
  NVME_STATUS_NVM_CAPACITY_EXCEEDED,
  NVME_STATUS_NVM_NAMESPACE_NOT_READY,
  NVME_STATUS_NVM_RESERVATION_CONFLICT,
  NVME_STATUS_FORMAT_IN_PROGRESS
} NVME_STATUS_GENERIC_COMMAND_CODES;

常數

 
NVME_STATUS_SUCCESS_COMPLETION
此命令已成功完成。
NVME_STATUS_INVALID_COMMAND_OPCODE
相關聯的命令 opcode 欄位無效。
NVME_STATUS_INVALID_FIELD_IN_COMMAND
命令參數中指定了無效或不支援的欄位。
NVME_STATUS_COMMAND_ID_CONFLICT
命令標識碼已在使用中。

注意

搜尋標識符衝突的命令數目是實作特定的。

NVME_STATUS_DATA_TRANSFER_ERROR
指出傳輸與命令相關聯的數據或元數據時發生錯誤。
NVME_STATUS_COMMAND_ABORTED_DUE_TO_POWER_LOSS_NOTIFICATION
表示命令因為電源遺失通知而中止。
NVME_STATUS_INTERNAL_DEVICE_ERROR
命令因內部錯誤而未順利完成。 內部裝置錯誤的詳細數據會以異步事件的形式傳回。
NVME_STATUS_COMMAND_ABORT_REQUESTED
命令已中止,因為收到命令中止命令,指定此命令的提交佇列標識碼和命令標識碼。
NVME_STATUS_COMMAND_ABORTED_DUE_TO_SQ_DELETION
命令已中止,因為收到提交佇列的刪除 I/O 提交佇列要求,而命令已提交至該佇列。
NVME_STATUS_COMMAND_ABORTED_DUE_TO_FAILED_FUSED_COMMAND
命令已中止,因為融合作業中的其他命令失敗。
NVME_STATUS_COMMAND_ABORTED_DUE_TO_FAILED_MISSING_COMMAND
命令已中止,因為找不到隨附的 fused 命令作為後續的提交佇列專案。
NVME_STATUS_INVALID_NAMESPACE_OR_FORMAT
命名空間或該命名空間的格式無效。
NVME_STATUS_COMMAND_SEQUENCE_ERROR
命令因多重命令序列中的通訊協議違規而中止。 例如,違反 TCG 記憶體同步介面通訊協定中的安全性傳送和安全性接收排序規則。
NVME_STATUS_INVALID_SGL_LAST_SEGMENT_DESCR
此命令包含無效的 SGL Last Segment 或 SGL Segment 描述元。 當 SGL Last Segment 描述元指向的 SGL 區段包含 SGL 區段描述元或 SGL Last Segment 描述元或 SGL 區段描述元時,就可能發生此情況。 當 SGL Last Segment 描述項包含無效長度 (例如,長度為零或 16 個) 的倍數時,就可能發生此情況。
NVME_STATUS_INVALID_NUMBER_OF_SGL_DESCR
區段的最後一個描述元或 SGL 區段描述項在區段的最後一個描述元以外的位置中,會根據指定的長度。
NVME_STATUS_DATA_SGL_LENGTH_INVALID
如果 Data SGL 的長度太短,就可能發生此情況。 如果 Data SGL 的長度太長,且控制器不支援 SGL 傳輸的時間超過要傳送的數據量,如識別控制器 (NVME_IDENTIFY_CONTROLLER_DATA) 數據結構的 SGL 支援 (SGLS) 字段所示。
NVME_STATUS_METADATA_SGL_LENGTH_INVALID
如果元數據 SGL 的長度太短,就可能發生此情況。 如果元數據 SGL 的長度太長,且控制器不支援 SGL 傳輸的時間超過要傳送的數據量,如識別控制器 (NVME_IDENTIFY_CONTROLLER_DATA) 數據結構的 SGL 支援 (SGLS) 欄位所示,就可能發生此情況。
NVME_STATUS_SGL_DESCR_TYPE_INVALID
SGL 描述元的類型是控制器不支援的類型。
NVME_STATUS_INVALID_USE_OF_CONTROLLER_MEMORY_BUFFER
控制器不支持嘗試使用控制器記憶體緩衝區。
NVME_STATUS_PRP_OFFSET_INVALID
PRP 專案的 Offset 字段無效。 當第一個項目之後有非零位移的 PRP 專案時,可能會發生這種情況。
NVME_STATUS_ATOMIC_WRITE_UNIT_EXCEEDED
指定的長度超過不可部分完成的寫入單位大小。
NVME_STATUS_OPERATION_DENIED
命令因為缺少訪問許可權而遭到拒絕。
NVME_STATUS_SGL_OFFSET_INVALID
描述項中指定的位移無效。
NVME_STATUS_RESERVED
保留的。
NVME_STATUS_HOST_IDENTIFIER_INCONSISTENT_FORMAT
NVM 子系統偵測到在不同控制器上使用 64 位和 128 位主機識別碼值。
NVME_STATUS_KEEP_ALIVE_TIMEOUT_EXPIRED
Keep Alive 定時器已過期。
NVME_STATUS_KEEP_ALIVE_TIMEOUT_INVALID
指定的 Keep Alive Timeout 值無效。
NVME_STATUS_COMMAND_ABORTED_DUE_TO_PREEMPT_ABORT
命令已中止,因為保留取得動作 (RACQA) 設定為 010b (Preempt 和 Abort) 。
NVME_STATUS_SANITIZE_FAILED
最新的清理作業失敗,且未成功完成任何復原動作。
NVME_STATUS_SANITIZE_IN_PROGRESS
要求函式 (例如,在進行清理作業時禁止命令) 。
NVME_STATUS_SGL_DATA_BLOCK_GRANULARITY_INVALID
SGLData 區塊描述元的位址對齊或長度數據粒度無效。
NVME_STATUS_NVM_LBA_OUT_OF_RANGE
此命令會參考超過命名空間大小的 LBA。
NVME_STATUS_NVM_CAPACITY_EXCEEDED
執行 命令會導致超過命名空間的容量。 當命名空間使用率超過命名空間容量時,就會發生此錯誤。
NVME_STATUS_NVM_NAMESPACE_NOT_READY
命名空間尚未準備好存取。 [不要重試] 位指出稍後是否重新發出命令可能會成功。
NVME_STATUS_NVM_RESERVATION_CONFLICT
命令已中止,因為與存取命名空間上保留的保留發生衝突。
NVME_STATUS_FORMAT_IN_PROGRESS
命名空間目前正在格式化。 [不要重試] 位會清除為 '0',表示如果重新提交命令,命令可能會成功。

規格需求

需求
最低支援的用戶端 Windows 10
標頭 nvme.h