队列模型 - 📘 一、命令特定错误状态码(SCT = 1h) (第112页)
NVME2.0协议解读 1 min read

队列模型 - 📘 一、命令特定错误状态码(SCT = 1h) (第112页)

Blog Author

我们继续深入分析 NVM Express® Base Specification, revision 2.0b 第 101 页,本页主要介绍了与 命令特定错误(Command Specific Errors) 相关的状态码。这些状态码是针对特定命令操作码(opcode)而定义的错误类型,涉及到 管理员命令命名空间管理固件操作 等方面。


📘 一、命令特定错误状态码(SCT = 1h)

状态码清单(00h2Ah

代码 名称 描述
00h Completion Queue Invalid 完成队列无效:发生在创建 I/O 提交队列时,队列配置错误或不匹配。
01h Invalid Queue Identifier 无效的队列标识符:通常发生在创建、删除 I/O 提交队列或完成队列时,标识符不合法。
02h Invalid Queue Size 无效的队列大小:在创建队列时,队列的大小不符合要求。
03h Abort Command Limit Exceeded 超过中止命令限制:当执行中止命令时,中止命令次数超出了限制。
05h Asynchronous Event Request Limit Exceeded 异步事件请求超限:发生在发送异步事件请求时,超过了允许的最大次数。
06h Invalid Firmware Slot 无效的固件插槽:固件提交过程中,指定了无效的固件插槽。
07h Invalid Firmware Image 无效的固件镜像:固件提交过程中,固件镜像无效。
08h Invalid Interrupt Vector 无效的中断向量:创建 I/O 完成队列时,提供了无效的中断向量。
09h Invalid Log Page 无效的日志页:请求日志页时,提供了无效的日志页。
0Ah Invalid Format 无效的格式:执行格式化操作时,格式不合法。
0Bh Firmware Activation Requires Conventional Reset 固件激活需要常规重置:执行固件提交时,需要执行常规重置才能激活固件。
0Ch Invalid Queue Deletion 无效的队列删除:删除 I/O 完成队列时,队列删除请求无效。
0Dh Feature Identifier Not Saveable 功能标识符不可保存:在设置功能时,某个功能标识符不可保存。
0Eh Feature Not Changeable 功能不可更改:某个功能在运行时不可修改。
0Fh Feature Not Namespace Specific 功能不属于命名空间特定功能:该功能不适用于命名空间操作。
10h Firmware Activation Requires NVM Subsystem Reset 固件激活需要 NVM 子系统重置:执行固件提交时,需要对子系统进行重置。
11h Firmware Activation Requires Controller Level Reset 固件激活需要控制器级别重置:执行固件提交时,需要对控制器进行重置。
12h Firmware Activation Requires Maximum Time Violation 固件激活要求超时:固件提交过程超出了最大时间限制。
13h Firmware Activation Prohibited 禁止固件激活:固件提交操作被禁止。
14h Overlapping Range 范围重叠:固件提交、固件镜像下载或设置功能时,指定的范围重叠。
15h Namespace Insufficient Capacity 命名空间容量不足:创建命名空间时,存储空间不足。
16h Namespace Identifier Unavailable 命名空间标识符不可用:请求的命名空间标识符不可用。
18h Namespace Already Attached 命名空间已经附加:尝试将已附加的命名空间重新附加。
19h Namespace Is Private 命名空间是私有的:该命名空间已被锁定为私有,无法进一步操作。
1Ah Namespace Not Attached 命名空间未附加:请求的命名空间未附加到系统中。
1Bh Thin Provisioning Not Supported 不支持精简配置:系统不支持精简配置的命名空间管理。
1Ch Controller List Invalid 无效的控制器列表:尝试附加命名空间时,控制器列表无效。
1Dh Device Self-test In Progress 设备自检进行中:设备正在进行自检,无法执行其他命令。
1Eh Boot Partition Write Prohibited 禁止写入启动分区:固件提交时,禁止写入启动分区。
1Fh Invalid Controller Identifier 无效的控制器标识符:虚拟化管理时,控制器标识符无效。
20h Invalid Secondary Controller State 无效的二级控制器状态:虚拟化管理时,二级控制器状态无效。
21h Invalid Number of Controller Resources 无效的控制器资源数:虚拟化管理时,控制器资源数不合法。
22h Invalid Resource Identifier 无效的资源标识符:虚拟化管理时,资源标识符无效。
23h Sanitize Prohibited While Persistent Memory Region is Enabled 当持久内存区域启用时,禁止执行消毒操作。
24h ANA Group Identifier Invalid ANA 组标识符无效:命名空间管理时,ANA 组标识符无效。
25h ANA Attach Failed ANA 附加失败:命名空间附加时,ANA 组附加失败。
26h Insufficient Capacity 容量不足:管理命名空间时,容量不足以进行操作。
27h Namespace Attachment Limit Exceeded 超出命名空间附加限制:命名空间附加操作超过最大限制。
28h Prohibition of Command Execution Not Supported 不支持命令执行禁止:执行命令时不支持禁止执行的操作。
29h I/O Command Set Not Supported 不支持 I/O 命令集:不支持请求的 I/O 命令集。
2Ah I/O Command Set Not Enabled I/O 命令集未启用:请求的 I/O 命令集未在控制器上启用。

🧩 三、状态码解析

1️⃣ 24hAdmin Command Media Not Ready

  • 原因:管理员命令需要访问存储媒体,但媒体尚未准备好,通常发生在控制器启动时,且不在 Controller Ready Independent of Media 模式下。

2️⃣ 80hLBA Out of Range

  • 原因:逻辑块地址(LBA)超出范围,尝试访问不在存储设备有效区域内的地址。

3️⃣ 81hCapacity Exceeded

  • 原因:命名空间的使用已超出最大容量,常见于写入操作超出设备容量时。

4️⃣ 82hNamespace Not Ready

  • 原因:命名空间未准备好,无法进行访问,可能是初始化未完成或设备问题。

5️⃣ 83hReservation Conflict

  • 原因:访问命名空间时,发现与现有的预定操作发生冲突,导致命令中止。

🧠 总结与核心要点

这些状态码主要用于 命令特定错误,针对不同操作码(如固件提交、命名空间管理等)提供具体的错误反馈。理解这些状态码可以帮助在遇到命令执行失败时,快速定位问题并采取相应的恢复措施。


如果你对某个具体状态码或命令集的应用场景感兴趣,或者希望了解如何在实际开发中处理这些错误,欢迎随时提出!