【NVMe2.0b 14-1】Abort、Asynchronous Event Request、Capacity Management command

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 命令。

Figure 140: Abort – Command Dword 10
BitsDescription
31:16Command Identifier (CID): 该字段指定要中止的命令的命令标识符,该标识符在命令本身的 CDW0.CID 字段中指定。
15:00Submission 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 中定义。

Figure 141: Abort – Command Specific Status Values
ValueDescription
3hAbort 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 节),并将 Retain Asynchronous Event 位清0;

  b)SMART / Health Status event: 指示 SMART 或 Health 状态事件(参见Figure 145)。要清除此事件,主机软件使用 Get Log Page 命令读SMART / Health Information log(请参阅第 5.16.1.3 节),并将 Retain Asynchronous Event 位清0。触发异步事件的 SMART/Health 条件可以在 Asynchronous Event Configuration feature 中使用 Set Features 命令进行配置(参见第 5.27.1.8 节);

  c)Notice event: 表示一般事件(参见Figure 146)。要清除此事件,主机软件会读取相应的 log page,如Figure 146 中所述。触发异步事件的条件可以使用 Set Features 命令在 Asynchronous Event Configuration feature 中进行配置(请参阅第 5.27.1.8 节)。

  d)I/O Command Specific Status events: Events that are specific to an I/O command (refer to Figure 147).

  e)Immediate events:仅当事件发生时存在未完成的 Asynchronous Event Request 命令时才报告的事件。如果事件发生并且没有未完成的 Asynchronous Event Request 命令,则不应报告该事件。没有log page与这些事件相关联。这些事件包括:

      A.Normal NVM Subsystem Shutdown event;

  f)Vendor Specific event: 表示供应商特定事件。要清除此事件,主机软件使用 Get Log Page 命令读取指示的供应商特定log page,并将 Retain Asynchronous Event 位清0。

  g)如果控制器支持 Sanitize Config 功能,则应支持 Sanitize Operation Completed With Unexpected Deallocation 异步事件(请参阅第 5.27.1.19 节)。

  h)由于新条目被添加到 log page(例如,Error Information log)或状态更新(例如,SMART / Health log中的状态),会报告异步事件。状态变化可能是永久性的(例如,media 已变为只读)或暂时的(例如,温度在一段时间内达到或超过阈值)。主机软件应在发出另一个 Asynchronous Event Request 命令之前修改事件阈值或屏蔽事件以防止暂时和永久状态更改,以避免重复报告异步事件。

如果发生启用报告的事件并且没有未完成的 Asynchronous Event Request 命令,则控制器应保留该 Asynchronous Event Type 的事件信息并将该信息用作对接收到的下一个异步事件请求命令的响应。如果 Get Log Page 命令在接收到异步事件请求命令之前清除了事件,或者如果发生断电情况,则不会发送通知。如果发生多个相同类型的事件,这些事件对异步事件请求命令具有相同的响应,那么这些事件可以作为对 Asynchronous Event Request 命令的单个响应进行报告。如果发生了多个不同类型的事件或对 Asynchronous Event Request 命令具有不同响应的事件,则控制器应保留这些事件的队列,以便在对后续 Asynchronous Event Request 命令的响应中进行报告。

5.2.1Command Completion

如果有要向主机报告的异步事件,则将完成队列条目发布到 Admin Completion Queue。与 Asynchronous Event Request 相关的命令特定状态值在Figure 142 中定义。

Figure 142: Status Code – Command Specific Status Values
ValueDescription
05hAsynchronous Event Request Limit Exceeded: 已超出并发未完成的Asynchronous Event Request 命令的数量。

完成队列条目的 Dword 0 包含有关异步事件的信息。完成队列条目的 Dword 0 的定义如Figure 143 所示。

Figure 143: Asynchronous Event Request – Completion Queue Entry Dword 0

在这里插入图片描述
在这里插入图片描述

Figure 144、Figure 145、Figure 146、或Figure 147 中的信息在 Asynchronous Event Information 字段中返回,具体取决于 Asynchronous Event Type。

Figure 144: Asynchronous Event Information – Error Status

在这里插入图片描述

Figure 145: Asynchronous Event Information – SMART / Health Status

在这里插入图片描述

Figure 146: Asynchronous Event Information – Notice

在这里插入图片描述

在这里插入图片描述

Figure 147: Asynchronous Event Information – I/O Command Specific Status

在这里插入图片描述

Figure 148: Asynchronous Event Information – Immediate

在这里插入图片描述

5.3Capacity Management command

主机软件使用 Capacity Management 命令来配置 NVM 子系统中的 Endurance Groups 和 NVM Sets,方法是选择一组支持的配置(即,Fixed Capacity Management;请参阅第 8.3.2 节)或指定要创建的 Endurance Group 或 NVM Set 的容量 (即,Variable Capacity Management;请参阅第 8.3.3 节)。Capacity Management 命令指定Figure 149 中定义的操作。 容量管理命令使用 Command Dword 10、Command Dword 11 和 Command Dword 12 字段。保留所有其他命令特定字段。 有关支持 Figure 149 中操作的要求,请参阅第 8.3 节。

Figure 149: Capacity Management – Command Dword 10

在这里插入图片描述

Figure 150: Capacity Management – Command Dword 11
BitsDescription
31:00Capacity Lower: 此字段指定要创建的 Endurance Group 或 NVM Set 容量的最低有效 32 位(以字节为单位)。
Figure 151: Capacity Management – Command Dword 12
BitsDescription
31:00Capacity Upper: 该字段指定要创建的 Endurance Group 或 NVM Set 容量的最高有效 32 位(以字节为单位)。

如果 Operation 字段指定 Create Endurance Group 操作或 Create NVM Set 操作,则 Capacity Upper 和 Capacity Lower 字段指定要创建的 Endurance Group 或 NVM Set 的容量。如果 Operation 字段指定任何其他操作,则保留 Capacity Upper 字段和 Capacity Lower 字段。

5.3.1Media Unit 配置选择

如果:

  a)Operation 字段指定 Select Capacity Configuration 操作;
  b)Element Identifier 字段指定支持的 Supported Capacity Configuration List 中的 Capacity Configuration Descriptor;且
  c)Media Unit Status log page 的 Selected Configuration 字段(参见Figure 248)被清除为 0h,

然后控制器应按顺序执行以下所有操作:

  1)为所选 Capacity Configuration Descriptor 中的每个 Endurance Group Configuration Descriptor 创建一个 Endurance Group。
  2)为每个 Endurance Group Configuration Descriptor 中指定的每个 NVM Set Identifier(如果有)创建一个 NVM Set。

如果 Operation 字段指定 Select Capacity Configuration 操作并且 Element Identifier 字段被清除为“0”,则控制器应通过按顺序执行以下所有操作来清除配置:

  1)删除包含控制器处理命令的域中的所有命名空间,如第 8.11 节所述。
  2)删除包含控制器处理命令的域中的所有 NVM Sets(如果有)。
  3)删除包含控制器处理命令的域中所有 Endurance Groups。
  4)将 Media Unit Status log page 中的 Selected Configuration 字段清除为 0h。

如果 Operation 字段指定了 Select Capacity Configuration 操作,Element Identifier 字段指定了 Media Unit Status log page 的 Selected Configuration 字段中报告的值(即当前选择的配置),则控制器应正确完成命令并且不得改变容量配置。 如果Operation 字段指定Select Capacity Configuration操作并且:

  a)Element Identifier 字段没有指定值 0h 或 Capacity Configuration List 中 Capacity Configuration Descriptor 的 Capacity Configuration Identifier;或者
  b)Media Unit Status log page 的 Selected Configuration 字段(参见Figure 248)未清除为 0h,

则控制器应以 Invalid Field in Command 状态码中止命令,并且不得对任何 Media Unit 的配置进行更改。

5.3.2Endurance Group Operations

如果 Operation 字段指定 Create Endurance Group 操作,控制器应选择未分配给指定域中现有 Endurance Group 的非零 Endurance Group Identifier(参见Figure 149),并在完成队列条目的 Dword 0 中指示该值(参见Figure 153)。如果非零未分配的 Endurance Group Identier 不可用,则控制器应以 Identifier Unavailable 的状态码中止命令。

如果 Operation 字段指定了 Create Endurance Group 操作并且支持 Media Units,则控制器从指定域中选择 Media Units 以分配给 Endurance Group。

如果 Operation 字段指定 Create Endurance Group 操作并且不支持 Media Units,则控制器从指定域中选择 NVM 容量分配给 Endurance Group。

如果 Operation 字段指定了 Create Endurance Group 操作,并且 Capacity Lower 和 Capacity Upper 字段指定了一个需要分配 NVM 容量的值,该值大于以下值:

  a)Identify Controller data structure 中的 Max Endurance Group Capacity (MEGCAP) 字段;
  b)Identify Controller data structure 中的 Unallocated NVM Capacity (UNVMCAP) 字段;或
  c)正在创建 Endurance Group 的域的 Domain Attributes Entry 中的 Max Endurance Group Capacity (MEGCAP) 字段,

那么controller:

  a)应以 Insufficient Capacity 状态中止命令; 且
  b)如果支持 Error Information log page,则应在 Command Specific Information 字段中指示能够创建的最大 Endurance Group 的 NVM 容量总量(以字节为单位)。

如果 Operation 字段指定 Delete Endurance Group 操作并且 Element Identifier 字段指定 0h 或不存在的 Endurance Group 的标识符,则控制器应以 Invalid Field In Command 状态中止命令。

5.3.3NVM Set Operations

如果 Operation 字段指定 Create NVM Set 操作,则控制器应选择未分配给指定 Endurance Group 中现有 NVM Sets的非零 NVM Set Identifier(参见Figure 149),并在完成队列条目中指示该值。如果非零的未分配 NVM Set Identifier 不可用,则控制器应以 Identifier Unavailable 的状态码中止命令。

如果 Operation 字段指定 Create NVM Set 操作,Capacity Lower 和 Capacity Upper 字段指定的值需要分配 NVM 容量,该值大于指定的 Endurance Group 的 Endurance Group Information log page 中 Unallocated Endurance Group Capacity (UEGCAP) 字段中的值 (参见Figure 217),那么控制器:

  a)如果支持 Error Information log page,则应在 Command Specific Information 字段中指示能够创建的最大 NVM Set 的 NVM 容量总量(以字节为单位); 并
  b)应以 Insufficient Capacity 状态中止命令。

如果 Operation 字段指定 Create NVM Set 操作并且 Element Identifier 字段被清除为 0h,则控制器应选择现有域中的现有 Endurance Group 来创建 NVM Set。

如果 Operation 字段指定 Create NVM Set 操作并且支持 Media Units,则控制器从 Endurance Group 中选择 Media Units 以分配给 NVM Set。

如果 Operation 字段指定 Create NVM Set 操作并且不支持 Media Units,则控制器从 Endurance Group 中选择 NVM 容量以分配给 NVM Set。

如果 Operation 字段指定 Delete NVM Set 操作并且 Element Identifier 字段指定值 0h 或不存在的 NVM Set 的标识符,则控制器应以 Invalid Field In Command 状态中止命令。

如果控制器不支持 NVM Set 并且 Operation 字段指定 Create NVM Set 操作或 Delete NVM Set 操作,则控制器应以 Invalid Field In Command 状态中止命令。

5.3.4Command Completion

Capacity Management 命令完成后,控制器将完成队列条目发布到 Admin Completion Queue。Capacity Management 命令特定状态值在Figure 152 中定义。

Figure 152: Capacity Management – Command Specific Status Values
ValueDescription
26hInsufficient Capacity: 请求的操作需要比当前可用空间更多的可用空间。Error Information log page的 Command Specific Information 字段(请参阅Figure 193)指定创建 Endurance Group 或 NVM Set 所需的 NVM 容量总量(以字节为单位)。
2DhIdentifer Unavailable: 已超过支持的 Endurance Group 或 NVM Set 的数量。

完成队列条目的 Dword 0 包含创建的 Endurance Group 或 NVM Set 的标识符(如果有)。完成队列条目 Dword 0 在Figure 153 中定义。

Figure 153: Capacity Management – Completion Queue Entry Dword 0
BitsDescription
31:16Reserved
15:00Created Element Identifier: 此字段指示使用 Create NVM Set 操作时创建的 NVM Set 的标识符。
如果使用了 Create Endurance Group 操作,此字段指示 Endurance Group Identifier 的标识符。
该字段对所有其他操作是 reserved。
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值