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的更多相关文章

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

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

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

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

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

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

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

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

  5. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(5.2)-- Asynchronous Event Request command

    5.2 异步事件请求命令 异步事件用于当状态.错误.健康信息这些事件发生时通知主机软件.为了使能这个controller报告的异步事件,主机软件需要提交一个或多个异步事件请求命令到controller ...

  6. Effective STL 学习笔记 Item 21:Comparison Function 相关

    Effective STL 学习笔记 Item 21:Comparison Function 相关 */--> div.org-src-container { font-size: 85%; f ...

  7. Flutter学习笔记(21)--TextField文本框组件和Card卡片组件

    如需转载,请注明出处:Flutter学习笔记(21)--TextField文本框组件和Card卡片组件 今天来学习下TextField文本框组件和Card卡片组件. 只要是应用程序就少不了交互,基本上 ...

  8. 《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数据大小 ...

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

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

随机推荐

  1. 安装Nginx到CentOS(YUM)

    运行环境 系统版本:CentOS Linux release 7.3.1611 软件版本:nginx-1.12.2 硬件要求:无 安装过程 1.配置YUM源 [root@localhost ~]# r ...

  2. LeetCode 面试题52. 两个链表的第一个公共节点

    题目链接:https://leetcode-cn.com/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/ 输入两个链表 ...

  3. 我眼中的ASP.NET.MVC

    MVC MVC全名 : Model View Controller ( Model-模型 View-视图  Controller-控制器)是一种经典的,经久不衰的,屹立不倒的软件设计框架.实现了业务逻 ...

  4. java设计模式学习笔记--接口隔离原则

    接口隔离原则简述 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应建立在最小的接口上 应用场景 如下UML图 类A通过接口Interface1依赖类B,类C通过接口Interface1依赖类 ...

  5. 深度优先搜索DFS---01背包问题(1)

    题目: 有n件物品,每件物品的重量为w[i],价值为c[i].现在需要选出若干件物品放入一个容量为 V 的背包中,使得在选入背包的物品重量之和,不超过容量V的前提下,让北欧保重物品的价值之和最大,求最 ...

  6. 使用ASP.NET Core 3.x 构建 RESTful API - 4.1 面向外部的Model

    Entity Framework Core 使用的 Entity Model 是用来表示数据库里面的记录的. 而面向外部的 model 则表示了要传输的东西.这类 model 有时候叫做 Dto,有时 ...

  7. JS DOM属性+JS事件

    DOM属性 console.log(ele.attributes) 获取ele元素的属性集合 ele.attributes.getNamesItem(attr).nodeValue 获取指定属性值 e ...

  8. PTA L2-029 | 特立独行的幸福 (打表+递归)

    题目描述 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 \(1\),就称该数为幸福数.\(1\) 是一个幸福数.此外,例如 \(19\) 经过一次迭代得到 ...

  9. MST Unification CodeForces - 1108F

    #include<iostream> #include<cstring> #include<algorithm> using namespace std; ; in ...

  10. P1041 传染病控制【暴搜】

    P1041 传染病控制 提交 10.78k 通过 3.74k 时间限制 1.00s 内存限制 125.00MB 题目提供者CCF_NOI 难度提高+/省选- 历史分数100 提交记录 查看题解 标签 ...