NVME_STATUS_GENERIC_COMMAND_CODES枚举 (nvme.h)

包含一个值,该值指示与命令关联的状态,该命令在很多不同类型的命令中都是通用的。

这些状态代码属于 NVME_STATUS_TYPE_GENERIC_COMMAND状态代码类型,并在命令完成后 完成队列条目中由控制器发布。 这些代码指示完成队列条目中由命令和提交队列标识符指定的命令已完成。

语法

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
关联的命令操作码字段无效。
NVME_STATUS_INVALID_FIELD_IN_COMMAND
命令参数中指定了无效或不支持的字段。
NVME_STATUS_COMMAND_ID_CONFLICT
命令标识符已在使用中。

注意

搜索 ID 冲突的命令数特定于实现。

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
由于未找到作为后续提交队列条目的配套融合命令,该命令已中止。
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 Last Segment 描述符或一个 SGL 段描述符,具体取决于所指示的长度。
NVME_STATUS_DATA_SGL_LENGTH_INVALID
如果 Data SGL 的长度太短,则可能发生这种情况。 如果数据 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 条目的偏移量字段无效。 当第一个条目之后有一个非零偏移量的 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
保持活动计时器已过期。
NVME_STATUS_KEEP_ALIVE_TIMEOUT_INVALID
指定的“保持活动超时”值无效。
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
命令的执行导致超出命名空间的容量。 当Namespace利用率超过Namespace容量时,会发生此错误。
NVME_STATUS_NVM_NAMESPACE_NOT_READY
命名空间尚未准备好访问。 “请勿重试”位指示以后是否重新发出命令可能会成功。
NVME_STATUS_NVM_RESERVATION_CONFLICT
由于与访问命名空间上保留的预留发生冲突,命令已中止。
NVME_STATUS_FORMAT_IN_PROGRESS
命名空间当前正在格式化。 “请勿重试”位将被清除为“0”,以指示如果重新提交命令,该命令可能会成功。

要求

要求 价值
最低支持的客户端 Windows 10
标头 nvme.h