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. C#中实现文件拖放打开的方法

    C#中实现文件拖放打开的方法 设置Form属性 AllowDrop = True; 在Form事件中 private void Form1_DragDrop(object sender, DragEv ...

  2. 重新安装python后,原来在虚拟环境里的django项目启动报错:dyld: Library not loaded: @executable_path/../.Python Referenced from: /Users/mac/.virtualenvs/WYGBlog-env/bin/python Reason: image not found

    因为当你创建一个虚拟环境的时候,一些软链接创建到原来的python上. 当用Homebrew更新python后,原来软连接对应的python已经不存在了. 因此需要把软链接指向新的python. 解决 ...

  3. 第2章 在 HTML中 使用 JavaScript

    第2章 在 HTML中 使用 JavaScript 2.1 script 元素 2.1.1 标签的位置 2.1.2 延迟脚本 2.1.3 异步脚本 2.1.4 在XHTML中的使用 2.1.5 不推荐 ...

  4. Elasticsearch配置集群环境

    环境选择:            1.方案一:准备三台机器   每一台机器一个节点            2.方案二:准备一台机器   启动三个节点,用端口号区分即可            3.ES启 ...

  5. pom.xml配置文件详解(Maven)

    注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 注:本文转载自:https://blog.csdn.net/u012152619/article/deta ...

  6. [Python机器学习]鸢尾花分类 机器学习应用

    1.问题简述 假设有一名植物学爱好者对她发现的鸢尾花的品种很感兴趣.她收集了每朵鸢尾花的一些测量数据: 花瓣的长度和宽度以及花萼的长度和宽度,所有测量结果的单位都是厘米. 她还有一些鸢尾花的测量数据, ...

  7. hdu6162

    这题一开始把我看愣了.难道是线段树套树状数组?空间根本开不下好不好!!! 后来想到维护区间极值,从而排除不必要情况,降低复杂度. 无需修改,码量顿减…… 注意,同一组数据放一行,注意行末空格. #in ...

  8. PP: Time series anomaly detection with variational autoencoders

    Problem: unsupervised anomaly detection Model: VAE-reEncoder VAE with two encoders and one decoder. ...

  9. Linux进程间通信-管道深入理解(转)

    原文地址:https://www.linuxidc.com/Linux/2018-04/151680.htm Linux进程通信系列文章将详细介绍各种通信方式的机制和区别 1.进程间通信 每个进程各自 ...

  10. linux下定时网站文件备份和数据备份以及删除旧备份标准代码

    直切正题: 文件备份:web.sh 数据备份:db.sh 删除旧备份:clear.sh vi web.sh文件内容为: #!/bin/bash        解释:shell脚本标准头 cd  网站文 ...