NVME_STATUS_COMMAND_SPECIFIC_CODES枚举 (nvme.h)

包含指示特定于特定命令的状态的值。

这些状态代码属于 NVME_STATUS_TYPE_COMMAND_SPECIFIC状态代码类型,并在命令完成后 完成队列条目中由控制器发布。

语法

typedef enum {
  NVME_STATUS_COMPLETION_QUEUE_INVALID,
  NVME_STATUS_INVALID_QUEUE_IDENTIFIER,
  NVME_STATUS_MAX_QUEUE_SIZE_EXCEEDED,
  NVME_STATUS_ABORT_COMMAND_LIMIT_EXCEEDED,
  NVME_STATUS_ASYNC_EVENT_REQUEST_LIMIT_EXCEEDED,
  NVME_STATUS_INVALID_FIRMWARE_SLOT,
  NVME_STATUS_INVALID_FIRMWARE_IMAGE,
  NVME_STATUS_INVALID_INTERRUPT_VECTOR,
  NVME_STATUS_INVALID_LOG_PAGE,
  NVME_STATUS_INVALID_FORMAT,
  NVME_STATUS_FIRMWARE_ACTIVATION_REQUIRES_CONVENTIONAL_RESET,
  NVME_STATUS_INVALID_QUEUE_DELETION,
  NVME_STATUS_FEATURE_ID_NOT_SAVEABLE,
  NVME_STATUS_FEATURE_NOT_CHANGEABLE,
  NVME_STATUS_FEATURE_NOT_NAMESPACE_SPECIFIC,
  NVME_STATUS_FIRMWARE_ACTIVATION_REQUIRES_NVM_SUBSYSTEM_RESET,
  NVME_STATUS_FIRMWARE_ACTIVATION_REQUIRES_RESET,
  NVME_STATUS_FIRMWARE_ACTIVATION_REQUIRES_MAX_TIME_VIOLATION,
  NVME_STATUS_FIRMWARE_ACTIVATION_PROHIBITED,
  NVME_STATUS_OVERLAPPING_RANGE,
  NVME_STATUS_NAMESPACE_INSUFFICIENT_CAPACITY,
  NVME_STATUS_NAMESPACE_IDENTIFIER_UNAVAILABLE,
  NVME_STATUS_NAMESPACE_ALREADY_ATTACHED,
  NVME_STATUS_NAMESPACE_IS_PRIVATE,
  NVME_STATUS_NAMESPACE_NOT_ATTACHED,
  NVME_STATUS_NAMESPACE_THIN_PROVISIONING_NOT_SUPPORTED,
  NVME_STATUS_CONTROLLER_LIST_INVALID,
  NVME_STATUS_DEVICE_SELF_TEST_IN_PROGRESS,
  NVME_STATUS_BOOT_PARTITION_WRITE_PROHIBITED,
  NVME_STATUS_INVALID_CONTROLLER_IDENTIFIER,
  NVME_STATUS_INVALID_SECONDARY_CONTROLLER_STATE,
  NVME_STATUS_INVALID_NUMBER_OF_CONTROLLER_RESOURCES,
  NVME_STATUS_INVALID_RESOURCE_IDENTIFIER,
  NVME_STATUS_SANITIZE_PROHIBITED_ON_PERSISTENT_MEMORY,
  NVME_STATUS_INVALID_ANA_GROUP_IDENTIFIER,
  NVME_STATUS_ANA_ATTACH_FAILED,
  NVME_IO_COMMAND_SET_NOT_SUPPORTED,
  NVME_IO_COMMAND_SET_NOT_ENABLED,
  NVME_IO_COMMAND_SET_COMBINATION_REJECTED,
  NVME_IO_COMMAND_SET_INVALID,
  NVME_STATUS_STREAM_RESOURCE_ALLOCATION_FAILED,
  NVME_STATUS_ZONE_INVALID_FORMAT,
  NVME_STATUS_NVM_CONFLICTING_ATTRIBUTES,
  NVME_STATUS_NVM_INVALID_PROTECTION_INFORMATION,
  NVME_STATUS_NVM_ATTEMPTED_WRITE_TO_READ_ONLY_RANGE,
  NVME_STATUS_NVM_COMMAND_SIZE_LIMIT_EXCEEDED,
  NVME_STATUS_ZONE_BOUNDARY_ERROR,
  NVME_STATUS_ZONE_FULL,
  NVME_STATUS_ZONE_READ_ONLY,
  NVME_STATUS_ZONE_OFFLINE,
  NVME_STATUS_ZONE_INVALID_WRITE,
  NVME_STATUS_ZONE_TOO_MANY_ACTIVE,
  NVME_STATUS_ZONE_TOO_MANY_OPEN,
  NVME_STATUS_ZONE_INVALID_STATE_TRANSITION
} NVME_STATUS_COMMAND_SPECIFIC_CODES;

常数

 
NVME_STATUS_COMPLETION_QUEUE_INVALID
创建 I/O 提交队列命令中指定的完成队列标识符不存在。
NVME_STATUS_INVALID_QUEUE_IDENTIFIER
指示以下命令的以下状态:

- 创建 I/O 提交队列:由于命令中指定的队列标识符无效,创建 I/O 提交队列失败。 无效的队列标识符是当前正在使用的队列标识符,或者是超出控制器支持的范围之外的队列标识符。
- 删除 I/O 提交队列:命令中指定的队列标识符无效。 如果指定了管理员完成队列标识符,也指示此错误。
- 创建 I/O 完成队列:由于命令中指定的队列标识符无效,I/O 完成队列的创建失败。 无效的队列标识符是当前正在使用的队列标识符,或者是超出控制器支持的范围之外的队列标识符。
- 删除 I/O 完成队列:命令中指定的队列标识符无效。 如果指定了管理员完成队列标识符,也指示此错误。
NVME_STATUS_MAX_QUEUE_SIZE_EXCEEDED
指示“创建 I/O 提交队列”和“创建 I/O 完成队列”命令的以下状态:

主机尝试创建 I/O 完成队列,条目数无效。 例如,值为零或超过 NVME_CONTROLLER_CAPABILITIES 结构的 MQES 字段中指定的控制器支持的最大值。
NVME_STATUS_ABORT_COMMAND_LIMIT_EXCEEDED
并发未完成的中止命令数已超过 标识控制器数据结构ACL 字段中指示的限制。
NVME_STATUS_ASYNC_EVENT_REQUEST_LIMIT_EXCEEDED
已超出并发未完成的异步事件请求命令的数量。
NVME_STATUS_INVALID_FIRMWARE_SLOT
固件提交命令中指示的固件槽无效或只读。 如果固件槽超出支持的数量,则表明此错误。
NVME_STATUS_INVALID_FIRMWARE_IMAGE
在固件提交命令中为激活指定的固件映像无效,并且控制器未加载。
NVME_STATUS_INVALID_INTERRUPT_VECTOR
由于在“创建 I/O 完成队列”命令中指定的无效中断向量,I/O 完成队列的创建失败。
NVME_STATUS_INVALID_LOG_PAGE
“获取日志页”命令中指示的日志页无效。 如果请求保留日志页,也会返回此错误条件。
NVME_STATUS_INVALID_FORMAT
指示格式 NVM 命令的以下状态:指定的格式无效。

这可能是由于各种条件,包括:

- 指定无效的逻辑块地址(LBA)格式编号。
- 如果每个 LBA 没有足够的元数据,则启用保护信息。
- 安全状态无效。 有关详细信息,请参阅 TCG 存储接互规范(SIIS)
NVME_STATUS_FIRMWARE_ACTIVATION_REQUIRES_CONVENTIONAL_RESET
指示固件提交命令的以下状态:

固件提交成功,但是,激活固件映像需要常规重置。 如果在传统重置之前发生函数级别重置(FLR)或控制器重置,则控制器将继续执行当前正在执行的固件映像。
NVME_STATUS_INVALID_QUEUE_DELETION
指示“删除 I/O 完成队列”命令的以下状态:

删除指定的 I/O 完成队列无效。 此错误条件的典型原因是,存在尚未删除的关联 I/O 提交队列。
NVME_STATUS_FEATURE_ID_NOT_SAVEABLE
“设置功能”命令中指定的功能标识符不支持可保存的值。
NVME_STATUS_FEATURE_NOT_CHANGEABLE
“设置功能”命令中指定的功能标识符可能不会更改。
NVME_STATUS_FEATURE_NOT_NAMESPACE_SPECIFIC
“设置功能”命令中指定的功能标识符不是特定于命名空间的。 功能标识符设置适用于所有命名空间。
NVME_STATUS_FIRMWARE_ACTIVATION_REQUIRES_NVM_SUBSYSTEM_RESET
指示固件提交命令的状态。
NVME_STATUS_FIRMWARE_ACTIVATION_REQUIRES_RESET
指示固件提交命令的以下状态:

固件提交成功,但是,固件映像的激活需要 NVM 子系统重置。 如果在 NVM 子系统重置之前发生任何其他类型的重置,控制器应继续执行当前正在执行的固件映像。
NVME_STATUS_FIRMWARE_ACTIVATION_REQUIRES_MAX_TIME_VIOLATION
指示固件提交命令的以下状态:

如果立即激活时指定的映像将超过标识控制器中报告的固件激活(MFTA)值的最大时间。 若要激活固件,需要重新颁发固件提交命令,并使用重置激活映像。
NVME_STATUS_FIRMWARE_ACTIVATION_PROHIBITED
指示固件提交命令的以下状态:

由于供应商的具体原因,控制器禁止激活指定的映像。 例如,控制器不支持下一修订固件。
NVME_STATUS_OVERLAPPING_RANGE
指示以下命令的以下状态:

- 固件提交:如果固件映像具有重叠范围,则指示此错误。
- 设置功能:如果 LBA 范围类型数据结构具有重叠范围,则指示此错误。
- 固件映像下载:如果固件映像具有重叠范围,则指示此错误。
NVME_STATUS_NAMESPACE_INSUFFICIENT_CAPACITY
指示Namespace管理命令的以下状态:

创建命名空间所需的可用空间比当前可用空间要多。 错误信息日志的“命令特定信息”字段指定创建命名空间所需的 NVM 容量总量(以字节为单位)。
NVME_STATUS_NAMESPACE_IDENTIFIER_UNAVAILABLE
指示Namespace管理命令的以下状态:

已超出支持的命名空间数。
NVME_STATUS_NAMESPACE_ALREADY_ATTACHED
指示 Namespace Attachment 命令的以下状态:

控制器已附加到指定的命名空间。
NVME_STATUS_NAMESPACE_IS_PRIVATE
指示 Namespace Attachment 命令的以下状态:

控制器未附加到命名空间。 无法完成附加控制器的请求,因为命名空间是专用的,并且已附加到一个控制器。
NVME_STATUS_NAMESPACE_NOT_ATTACHED
指示 Namespace Attachment 命令的以下状态:

控制器未附加到命名空间。 无法完成分离控制器的请求。
NVME_STATUS_NAMESPACE_THIN_PROVISIONING_NOT_SUPPORTED
NVME_STATUS_CONTROLLER_LIST_INVALID
指示 Namespace Attachment 命令的以下状态:

提供的控制器列表无效。
NVME_STATUS_DEVICE_SELF_TEST_IN_PROGRESS
指示设备自测试命令的状态。
NVME_STATUS_BOOT_PARTITION_WRITE_PROHIBITED
指示固件提交命令的状态。
NVME_STATUS_INVALID_CONTROLLER_IDENTIFIER
指示虚拟化管理命令的状态。
NVME_STATUS_INVALID_SECONDARY_CONTROLLER_STATE
指示虚拟化管理命令的状态
NVME_STATUS_INVALID_NUMBER_OF_CONTROLLER_RESOURCES
指示虚拟化管理命令的状态。
NVME_STATUS_INVALID_RESOURCE_IDENTIFIER
指示虚拟化管理命令的状态。
NVME_STATUS_STREAM_RESOURCE_ALLOCATION_FAILED
指示 Streams 指令命令的状态。
NVME_STATUS_NVM_CONFLICTING_ATTRIBUTES
指示这些命令的以下状态:数据集管理、读取、写入

命令中指定的属性冲突。
NVME_STATUS_NVM_INVALID_PROTECTION_INFORMATION
指示以下命令的以下状态:比较、读取、写入、写入零

命令中指定的保护信息设置无效。
NVME_STATUS_NVM_ATTEMPTED_WRITE_TO_READ_ONLY_RANGE
指示这些命令的以下状态:数据集管理、写入、写入不可更正、写入零

如果针对只读范围尝试解除分配,控制器可以选择报告此状态。

要求

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