abort命令简介
Abort命令用于中止先前提交给ASQ或IO SQ的特定命令。Abort命令是一种尽力而为的命令。将要被Abort的那个命令可能已经完成,可能正在执行中,或者可能已排队很深。
要中止大量命令(例如,超过ACL字段中列出的限制的命令数量),Host应遵循第7.3.3节中描述的过程去delete the I/O Submission Queue and recreate the I/O Submission Queue。
Abort命令使用命令DW10字段。保留所有其他命令特定字段。
Identify Controller数据结构(refer to Figure 251)里的Abort Command Limit字段代表并发执行Abort 命令的controller限制(同时能执行几个abort)。Host不允许正在执行的abort命令数量超过那个值。controller可以以“ Abort Command Limit Exceeded status”状态完成任何多余的Abort 命令。
命令完成
在Abort 命令完成后。controller向ACQ发送一个CQ entry,该entry指示Abort命令的状态,并指示要Abort 的那条命令是否被中止。CQ Entry的Dword0表示要Abort 的那条命令是否中止。
如果要被abort的命令成功中止,那么需要在abort命令自己(abort cmd的CQ entry)的CQ entry放到ACQ中之前把被abort的命令的CQ entry(被终止的那个命令的CQ entry)放到对应的IO 或 Admin CQ中,并且状态是Command Abort Requested,然后abort命令的ACQ entry中DW0中的bit0需要被清0。
如果要被abort的命令没有成功被abort,那么abort命令的ACQ entry中DW0中的bit0需要被置1。
与Abort 命令关联的命令特定状态值在图144中定义。