5.1Abort command
Abort 命令用于中止先前提交到 Admin Submission Queue 或 I/O Submission Queue 的特定命令。Abort 命令一个是尽力而为的命令; 一个Abort命令可能已经完成,正在执行中,或者可能已在排的很深的队列中。
要中止大量命令(例如,超过 ACL 字段中列出的限制的命令数量),主机应按照第 3.7.3 节中描述的程序删除 I/O Submission Queue 并重新创建 I/O Submission Queue。
Abort 命令使用 Command Dword 10 字段。保留所有其他命令特定字段。
Identify Controller data structure 中的 Abort Command Limit 字段(参见Figure 275)指示对 Abort 命令并发执行的控制器限制。主机不应允许未完成的 Abort 命令的数量超过此值。控制器可以以 Abort Command Limit Exceeded 状态完成任何多余的 Abort 命令。
| Bits | Description |
|---|---|
| 31:16 | Command Identifier (CID): 该字段指定要中止的命令的命令标识符,该标识符在命令本身的 CDW0.CID 字段中指定。 |
| 15:00 | Submission Queue Identifier (SQID): 该字段指定与要中止的命令相关联的 Submission Queue 的标识符。 |
5.1.1Command Completion
在完成 Abort 命令后,控制器将完成队列条目发布到 Admin Completion Queue,指示 Abort 命令的状态并指示要中止命令是否被中止。完成队列条目的 Dword 0 指示要中止的命令是否已中止。
如果要中止的命令已经成功被abort,那么在Abort 命令的CQE发送到Admin Completion Queue之前被中止命令的CQE要发布到合适的Admin或I/O Completion Queue, 并且status code为Command Abort Requested,并且应将 Abort 命令的完成队列条目中Dword 0 的bit 0清为“0”。如果要被种植的命令没有因任何原因中止,则应给Abort命令的完成队列条目Dword 0 的 bit 0设置为“1”。
与 Abort 命令相关的命令特定状态值在Figure 141 中定义。
| Value | Description |
|---|---|
| 3h | Abort Command Limit Exceeded: 同时未完成的 Abort 命令的数量已超过 Identify Controller data structure 中指示的限制。 |
5.2Asynchronous Event Request command
异步事件用于在这些事件发生时将状态、错误和健康信息通知主机软件。为了使控制器能够上报异步事件,主机软件需要向控制器提交一个或多个 Asynchronous Event Request 命令。控制器通过完成 Asynchronous Event Request 命令向主机指定事件。主机软件应该预期控制器可能不会立即执行命令;该命令应在有事件要报告时完成。
Asynchronous Event Request 命令由主机软件提交,以启用来自控制器的异步事件报告。此命令没有timeout。当有异步事件要报告给主机时,控制器会发布此命令的完成队列条目。如果在控制器reset时异步事件请求命令未完成,则这些命令中的每一个都将中止并且不应返回 CQE。
保留所有命令特定字段。
主机软件可以提交多个 Asynchronous Event Request 命令以减少事件报告延迟。同时未完成的异步事件请求命令的总数受Figure 275 中 Identify Controller data structure 中指定的 Asynchronous Event Request Limit 的限制。
异步事件分为多个事件类型。事件类型在异步事件请求命令的完成队列条目的 Dword 0 中的 Asynchronous Event Type字段中指示。当控制器为未完成的 Asynchronous Event Request 命令发布完成队列条目并因此报告异步事件时,控制器自动屏蔽该事件类型的后续事件,直到主机清除该事件。除非另有说明,否则可以通过使用 Get Log Page 命令读取与该事件关联的 log page 来清除事件(请参阅第 5.16 节)。如果由于 media 未准备好而无法访问该 log page(即,对于请求该日志页的 Get Log Page 命令,控制器返回 Admin Command Media Not Ready 状态码),则控制器不应为该异步事件发布完成队列条目,直到控制器能够成功返回需要读取以清除异步事件的 log page。
定义了以下事件类型:
a)Error event: 表示与特定命令无关的一般错误(参见 Figure 144)。要清除此事件,主机软件使用 Get Log Page 命令读Error Information log (参见第 5.16.1.2 节)

这篇内容详细介绍了NVMe设备的Abort命令,用于中止先前提交的命令。Abort命令是非强制性的,并且可能在不同状态中完成。此外,还讨论了AsynchronousEventRequest命令,用于接收控制器的异步事件通知,如错误、SMART状态和通知事件。这些事件的完成和处理机制也有明确的规定。最后,CapacityManagement命令用于管理NVMe子系统的容量,包括创建和删除EnduranceGroup和NVMSet,以及配置选择。每个命令的完成过程都会产生相应的队列条目并带有特定的状态信息。
最低0.47元/天 解锁文章
4590

被折叠的 条评论
为什么被折叠?



