《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(8.21)-- Host Operation with Asymmetric Namespace Access Reporting
8.21 使用ANA报告的主机操作
8.21.1 主机ANA普通操作
主机通过在Identify Controller数据结构中CMIC域的第3位来判断是否支持ANA。NSID或标识(参考第7.10章节)用于判断到同一个namespace的多路径什么时候有效。主机测验ANA Log page(参考5.14.1.12章节)对每个controller确定加载到本controller上的每组namespace们的ANA状态。
发送命令到一个namespace,主机应该选择一个报告ANA Optimized State(参考8.20.3.1章节)的controller,把命令发送到这个controller。如果为namespace发现了多于一个的报告ANA Optimized状态的controller,那么主机可以使用所有的这些controller发送命令。
如果对一个namespace未发现报告ANA Optimized状态的controller,那么主机应该为namespace选择报告Non-Optimized状态的controller。如果为namespace发现了多于一个的报告ANA Non-Optimized状态的controller,那么主机可以使用所有的这些controller发送命令。
如果多个controller被使用,决策和选择使用下一个controller的算法超出了本规格说明书的范围(例如:主机可以选择简单的轮询,队列深度加权算法,传输长度加权算法,或其他算法)。
对namespace如果没有报告ANA Optimized状态的controller,且也没有controller报告ANA Non-Optimized状态,主机应该检测controller报告的ANA Inaccessible状态,参加第8.21.2章节中描述。
8.21.2 主机 ANA Inaccessible操作
如果ANA Log page报告一个ANA Group处于ANA Inaccessible状态,或命令返回Asymmetric Access Inaccessible状态码,那么主机应该:
- 不要使用那个controller发送命令到任何ANA Group中的namespace;
- 选择一个其他controller来发送命令到所有那个ANA Group中的namespace;
如果没有controller对namespace报告ANA Optimized状态,也没有controller报告ANA Non-Optimized状态,那么可以发生状态切换影响controller报告ANA Inaccessible状态。作为结果,主机应该使用Host ANA Transition操作(参考8.21.4章节)描述的方法来判定是否在ANATT时间间隔内controller报告ANA Inaccessible状态转换ANA状态,通过controller来使能命令去处理。
8.21.3 主机ANA Persistent Loss操作
如果ANA Log page报告一个ANA组的ANA状态为ANA Persistent Loss 状态,或命令返回Asymmetric Access Persistent Loss,那么主机不应该在使用那个controller去发送命令到任何ANA组中的namespace,发送命令到任何ANA组的namespace请选择一个其他的controller。如果controller支持Namespace Management,一个ANA组中的namespace报告这个状态应该卸载掉。
8.21.4 主机ANA切换操作
对于一个ANA Group组如果ANA Log page报告一个ANA变更状态的ANA状态,或命令返回Asymmetric Access Transition状态码,那么主机应该临时的不使用这个controller发送命令到这个ANA Group中的任何namespace。如果只有controller报告ANA Inaccessible State有效,那么主机应该按下边步骤来判断用哪个controller。用controller,主机可以:
a)如果Asymmetric Namespace Access Change Notices在controller上被使能(参考5.21.1.11章节),等待来自这个controller的Asymmetric Namespace Access Change Notice。此后通知的接收,主机应该检测ANA Log page去确认新的ANA状态和恢复基于新ANA状态发送命令。这个通知应该在ANATT时间内产生;
b)在ANATT时间间隔内延时和重试命令。主机不是立即重试,更确切的说,为命令重试目的把ANATT时间划分成若干份相等间隔(例如:如果ANATT是30,执行3次间隔10s,或执行10次间隔3s)。ANATT时间间隔即将完成或在此期间,ANA Group的ANA状态应该公知的(例如:一个命令重试返回不同的状态表明新ANA状态转换完成)。如果重试的命令没有完成没有错误,ANA Log page应该在每个提供到namespace的访问的controller上被检测,主机应该重新发起基于新ANA状态发送命令。
如果ANATT时间间隔超期,那么主机应该使用其他controller去发送命令到ANA Group中的namespace。由controller呈现的ANATT间隔报告应该防止这种时间超时的类型发生。
8.21.5 主机ANA转换操作
从controller收到Asymmetric Namespace Access Change Notice可能表明:
a)ANA状态上报一个或多个ANA Group Descriptors中有变更;
b)一个新的NSID被添加到一个或多个ANA Group Descriptors;
c)一个NSID被从一个或多个ANA Group Descriptors中移除;
d)如果Identify Controller数据结构中ANACAP域的第6位被清零(参考Figure 247),Namespace的NSID被从一个ANA Group Descriptor中移到另一个ANA Group Descriptor。
作为接收一个Asymmetric Namespace Access Change Notice的结果,主机应该读ANA Log page来检查以上这些每个可能的变化。
8.21.6 所有路径Down情况
当主机访问ANA Group中的namespace没有有效路径时就出现了所有路径down。为确认是否全路径down情况发生,主机可以在每个提供访问指定ANA Group中namespace的controller上测验ANA Log page。所有未处于ANA Persistent Loss状态的路径都应该被检测。在ANATT时间间隔内如果没有叨叨那个ANA Group的namespace路径有效(即:转换成ANA Optimized状态或ANA Non-Optimized状态),那么对于那个ANA Group中的namespace来说所有的路径down条件已发生。
《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(8.21)-- Host Operation with Asymmetric Namespace Access Reporting的更多相关文章
- 2019/1/10 redis学习笔记(二)
本文不涉及集群搭建操作 关于在lua脚本中操作redis的应用场景 大家都知道redis对于单个集合的操作是原子性的;但是有可能有一种场景是这样.比如说抢红包,现在有十个人抢五份红包,抽象到我们jav ...
- 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(1)
材料说明: 文档<NVM-Express-1_4-2019.06.10-Ratified.pdf>来自于NVMe网站:https://nvmexpress.org/ 笔记目的是学习NVMe ...
- 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(8.20)-- ANA
8.20 非对称namespace访问报告 8.20.1 非对称namespace访问报告概况 非对称Namespace访问(ANA)在如下场景下产生,基于访问这个namespace的controll ...
- 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承
<Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...
- 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(5.2)-- Asynchronous Event Request command
5.2 异步事件请求命令 异步事件用于当状态.错误.健康信息这些事件发生时通知主机软件.为了使能这个controller报告的异步事件,主机软件需要提交一个或多个异步事件请求命令到controller ...
- Effective STL 学习笔记 Item 21:Comparison Function 相关
Effective STL 学习笔记 Item 21:Comparison Function 相关 */--> div.org-src-container { font-size: 85%; f ...
- Flutter学习笔记(21)--TextField文本框组件和Card卡片组件
如需转载,请注明出处:Flutter学习笔记(21)--TextField文本框组件和Card卡片组件 今天来学习下TextField文本框组件和Card卡片组件. 只要是应用程序就少不了交互,基本上 ...
- 《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数据大小 ...
- 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(8.8)-- Reservations
8.8 Reservations 预订 NVMe的reservation预订功能,用于让两个或多个主机能够协调配合的访问共享namespace.使用这些功能的协议和方式超出了本规格说明书的范围.对这些 ...
随机推荐
- cf936B
题意简述:给出一个有向图,问从s出发是否能找到一条长度为奇数的路径并且路径的端点出度为0,存在就输出路径,如果不存在判断图中是否存在环,存在输出Draw,否则输出lose 题解:类似于DP,将每一个点 ...
- MySQL 8 拷贝MySQL数据库到另一台机器
通过mysqldump生成包含SQL语句的文件,然后将其应用到目标机器的mysql客户端程序. mysqldump --help 可以获取mysqldump选项以及用法. 如果源服务器上启用了GTID ...
- JS宣传页项目-综合实战
按照国际惯例先放图 index.html <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- mac anyconnect 卸载方法
打开终端: 输入下面的命令 sudo /opt/cisco/vpn/bin/vpn_uninstall.sh 有问题 端口占用 sudo /opt/cisco/anyconnect/bin/webse ...
- 在eclipse更新启动项目
说明:figfree是基于模块化开发,代码重用,可拆解性高. 功能模块分为:接口工程(*.Iface).接口实现工程(*.Impl).客户端工程(*.Client) 接口工程(*.Iface):对其他 ...
- win10修改jupyter notebook默认路径
安装anaconda3 ,因此自带jupyter notebook 发送到jupyter notebook到桌面快捷方式 右击属性,将目标的%USERPROFILE%,修该为自己需要的路径 起始位置修 ...
- sqli-labs11-17(手注+sqlmap)
这几关涉及到的都是post型data处注入,和get型的差别就是注入点的测试处不一样,方法都是一样的 0x01 sqli-labs less-11 1.手工 由于是post型注入,那么我们不能在url ...
- 【剑指Offer】60、按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 题解:BFS 主要的方法与BFS写法没什么区 ...
- PAT (Basic Level) Practice (中文)1031 查验身份证 (15 分)
一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8, ...
- Normalizing flows
probability VS likelihood: https://zhuanlan.zhihu.com/p/25768606 http://sdsy888.me/%E9%9A%8F%E7%AC%9 ...