5.2 异步事件请求命令

异步事件用于当状态、错误、健康信息这些事件发生时通知主机软件。为了使能这个controller报告的异步事件,主机软件需要提交一个或多个异步事件请求命令到controller。controller通过完成一个异步事件请求命令到主机来详细描述一个事件。主机软件应当期望controller可能不是立即执行这个命令,当有一个事件需要报告给主机时这种命令才会被完成。

异步事件请求命令由主机软件提交来使能从controller的异步事件报告。这种命令不会超时。当有一个异步事件时controller为这个命令推送一个CQE报告给主机。如果当controller被重启时有异步事件请求命令待处理,那么这些命令被abort,不回复CQE。

所有特定于命令的字段都被保留。

主机软件可以提交多个异步事件请求命令来减小报告时延。并存待处理的异步事件请求命令的总数是有限的,限制由Identify Controller数据结构中的Asynchronous Event Request Limit指定,请参照Figure 247。

【附加:AERL字段占用一个字节,为便于查看,从Figure 247的Identify Controller data structure中截取出对应的字段如下】

异步事件们被分组到不同的事件类型中,事件类型信息在CQE的Dword 0中为异步事件请求命令做标识。当Controller为一个待处理异步事件请求命令发送CQE,这样报告一个异步事件,在主机清除这个事件之前,本事件类型的随后的事件被自动的屏蔽。主机清理事件的方式是通过使用Get Log Page命令读对应事件的log page(参考第5.14章节)。

已定义的事件类型如下:

a)Error event:表明一个非特定于此命令的常规错误(参考Figure 145)。主机软件使用Get Log Page命令且Retain Asynchronous Event位设置为0读取这个Error Information log(参考第5.14.1.1章节)来清除这个事件。

b)SMART/Health Status event:表明一个SMART或Health状态事件(参考Figure146)。主机软件使用Get Log Page命令且Retain Asynchronous Event位设置为0读取这个SMART/Health Information log(参考第5.14.1.2章节)来清除这个事件。触发异步事件的条件是可以在Asynchronous Event Configuration特性中使用Set Feature命令来配置的(参考5.21章节)。

c)Notice event:表明一个常规事件(参考Figure 147)。参照Figure 147中的描述,主机软件读取适当的日志页来清除这个事件。触发异步事件的条件可以在Asynchonous Event Configuration特性中使用Set Feature命令(参考第5.21.1.11章节)来配置。这些notice事件包括:

A. Namespace Attribute Changed;

B. Firmware Activation Starting;

C. Telemetry Log Changed;
D. Asymmetric Namespace Access Change;

E. Predictable Latency Event Aggregate Log Change;

F. LBA Status Information Alert; and

G. Endurance Group Event Aggregate Log Page Change;

d)NVM Command Set Specific event:事件是由I/O命令集来定义的:

A. Reservation Log Page Available event:预订日志页可用事件表明一个或多个Reservation Notification日志页(参考第5.14.1.16.1章节)是空闲可用的。主机软件使用Get Log Page命令且Retain Asynchronous Event位设置为0读取这个Reservation Notification日志页来清除此事件;

B. Sanitize Operation Completed event:无害化【让介质上数据毁尸灭迹无法恢复】操作完成事件表明无害化操作已经完成(包括任意相关联的附加的介质修改,参考Figure 247中的No-Deallocate Modifies Media After Sanitize 字段),在Sanitize Status日志页(参考第5.14.1.16.2)中所有LBAs不存在意外未释放和状态可用的情况。主机软件使用Get Log Page命令且Retain Asynchronous Event位设为0读取Sanitize Status日志页来清除此事件;

C. Sanitize Operation Completed With Unexpected Deallocation event:表明无害化操作已经完成,在Sanitize Status日志页中,对于所有LBAs和状态可用,存在意外的解除分配。主机软件使用Get Log Page命令且Retain Asynchronous Event位设为0读取Sanitize Status日志页来清除此事件。

e)Vendor Specific event:厂商特定时间表明一个特定厂商的事件。主机软件使用Get Log Page命令且设置Retain Asynchronous Event位为0读取这个表明特定厂商日志页来清除此事件。

如果控制器支持Sanitize Config特性,则应该支持Sanitize Operation Completed With Unexpected Deallocation异步事件。

异步事件被报告是因为有新条目加进一个日志页(例如Error Information日志)或状态更新(例如SMART/Health日志中的状态)。一个状态变化或许永久的(例如介质变成了只读)或短暂的(例如某个时间周期温度达到或超过一个临界值)。发布另一个异步事件请求命令之前,主机软件应该更改这个事件临界值或屏蔽这个事件,以避免异步事件重复的报告。

【1-1】关于异步事件上报已经被使能,但没有异步事件命令待处理的情况,如果事件发生,Controller应该保留该异步事件类型的事件信息,并将该信息用作对接收到的下一个异步事件请求命令的相应。【1-2】如果在接收到异步事件请求命令之前一个Get Log Page命令清除了此事件或者发生了掉电关机情况,那么通知不发送。【2-1】如果相同类型的多个事件且对异步事件请求命令具有完全相同应答的事件发生,那么这些事件可以作为一个单个应答给异步事件请求命令。【2-2】如果多个不同类型的事件产生,那么controller应该保留这些事件的队列,以便在应答后续异步事件请求命令时上报。

5.2.1 Command Completion

如果有异步事件需要报告给主机,就从Admin CQ发送一个CQE。与异步事件请求相关的命令特定状态值定义在Figure 143中。

CQE的Dword 0 包含关于异步事件的信息。CQE的Dword 0的定义在Figure 144 中。

【为了便于直观理解 Figure 144,参考下边SPDK代码截图,左边spdk_nvme_async_event_completion是对CQE的Dword 0 做的按位定义】

下边不论是Figure 145,Figure 146,Figure 147,还是Figure 148中的信息,是用于在Asynchronous Event Information字段域中被返回的,具体依赖于异步事件的类型。

《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(5.2)-- Asynchronous Event Request command的更多相关文章

  1. 2019/1/10 redis学习笔记(二)

    本文不涉及集群搭建操作 关于在lua脚本中操作redis的应用场景 大家都知道redis对于单个集合的操作是原子性的;但是有可能有一种场景是这样.比如说抢红包,现在有十个人抢五份红包,抽象到我们jav ...

  2. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(8.8)-- Reservations

    8.8 Reservations 预订 NVMe的reservation预订功能,用于让两个或多个主机能够协调配合的访问共享namespace.使用这些功能的协议和方式超出了本规格说明书的范围.对这些 ...

  3. 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承

    <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...

  4. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(5.23)-- Format NVM command

    5.23 Format NVM command - NVM Command Set Specific Format NVM命令用于低级格式化NVM媒介.这个命令被host主机使用,来变更LBA数据大小 ...

  5. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(1)

    材料说明: 文档<NVM-Express-1_4-2019.06.10-Ratified.pdf>来自于NVMe网站:https://nvmexpress.org/ 笔记目的是学习NVMe ...

  6. 201521123003《Java程序设计》第10周学习笔记

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 1.finally 题目4-2 1.1 截图你的提交结果(出 ...

  7. Jerry Wang从2017年到2019年的自由泳学习笔记

    打腿 把注意力调整到脚部,尽量不要让他打出水面,因为在空气中大腿完全是无用功,但是如果只是脚跟出水一点,倒也没什么关心,但是主观上,要控制一下,如果你听到你的打腿是"咚咚咚咚"这样 ...

  8. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(5.21.1.10-加-6.4)Atomic_Operations

    5.21.1.10 Write Atomicity Normal 这个特性控制AWUN和NAWUN参数的操作.设置的属性值在set Feature命令的Dword 11中表明. 如果提交Get Fea ...

  9. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(8.20)-- ANA

    8.20 非对称namespace访问报告 8.20.1 非对称namespace访问报告概况 非对称Namespace访问(ANA)在如下场景下产生,基于访问这个namespace的controll ...

随机推荐

  1. Django框架的初使用-2

    目录 Django框架的初使用-1 1 Django MVT回顾 2 模型M 2.1 ORM框架 2.2 模型设计 3 视图V 3.1 定义视图函数 3.2 配置URLconf 3.3 视图-匹配过程 ...

  2. 7.Android-压力测试、单元测试、日志猫使用

    1.压力测试monkey 通过cmd输入下面命令: adb shell monkey -p com.example.phonecall --ignore-crashes --ignore-timeou ...

  3. STM32之RGB灯仿真

    实验目的 点灯是练习GPIO输出的最佳实验.由于疫情期间没法返校,手头上没有现成的实验板,于是借助Proteus进行仿真.本实验点的不是普通的灯,而是RGB混色灯,实现多种颜色的显示.后期还可以加上P ...

  4. Python学习零基础<入门必学>

    1. 注释注释 是任何存在于 # 号右侧的文字,其主要用作写给程序读者看的笔记. 2. 字面常量一个字面常量(Literal Constants)的例子是诸如 5.1.23 这样的数字,或者是如 这是 ...

  5. 02.JS数据类型与数据类型转换

    前言:   学习一门编程语言的基本步骤 (01)了解背景知识 (02)搭建开发环境 (03)语法规范 (04)常量和变量 (05)数据类型 (06)数据类型转换5.数据类型——datatype  数据 ...

  6. 常用Content-type对照表

    文件扩展名 Content-type .html text/html .xhtml text/html .gif image/gif .png image/png .jpg image/jpeg 更加 ...

  7. C语言 运算符

    C语言 运算符 运算符优先级别 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员 ...

  8. kettle文本文件写入数据库,简单进行数据清洗

    使用kettle7.0,java8.0,Navicat,实验数据使用全国肺炎2月24日的数据 1.建立关系 2.创建连接 如果是第一次连接,可能会出现连接不上的情况,这时候可能情况是没有将Mysql的 ...

  9. Wannafly Winter Camp 2020 Day 6C 酒馆战棋 - 贪心

    你方有 \(n\) 个人,攻击力和血量都是 \(1\).对方有 \(a\) 个普通人, \(b\) 个只有盾的,\(c\) 个只有嘲讽的,\(d\) 个有盾又有嘲讽的,他们的攻击力和血量都是无穷大.有 ...

  10. 【终端使用】"scp"命令,远程拷贝文件

    一."scp"命令的使用 "scp"命令,是"secure copy (remote file copy program)"英文单词的缩写, ...