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. C语言用两个栈实现队列(完整版)

    队列是一种 先进先出(first in - first out, FIFO)的数据结构,队列中的元素都从后端(rear)入队(push),从前端(front)出队(pop).实现队列最直观的方法是用链 ...

  2. 浅谈python的第三方库——numpy(一)

    python作为广受欢迎的一门编程语言,其中很重要的一个原因便是它可以使用很多第三方库. 对第三方库的理解,在笔者看来就是一些python爱好者和专门的研发机构,为满足某一特定应用领域的需要,使用py ...

  3. Vue中vue-i18n结合vant-ui实现国际化

    (一)添加依赖模块 在package.json文件中添加vant模块的依赖,如: // package.json { "dependencies": { "vant&qu ...

  4. SQL Server远程数据库操作(备份、还原等)

    · SQL Server远程数据库备份到本地: exp sauser/sapassword@192.168.8.233:1433/DBName file=d:/backup.dmp OWNER=sum ...

  5. H5解决active伪类失效---点击后背景效果

    <body ontouchstart></body> 给body注册一个空事件即可

  6. mnist手写数字问题初体验

    上一篇我们提到了回归问题中的梯度下降算法,而且我们知道线性模型只能解决简单的线性回归问题,对于高维图片,线性模型不能完成这样复杂的分类任务.那么是不是线性模型在离散值预测或图像分类问题中就没有用武之地 ...

  7. 网站后门shell-----eval

    我们先来看看网站被攻击的代码: <?php error_reporting(E_ERROR); unlink('user.php'); unlink('../member/login.php') ...

  8. openlayers画区域

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. .net mvc 多文件上传

    1.input文件上传设置允许选择多个文件,设置属性 multiple即可 <input type="file" multiple="multiple" ...

  10. ASP.NET MVC中ActionResult的不同返回方式

    1.返回视图 return View();//返回方法名对应的视图 return View("aaa");//返回名称为aaa的视图 2.返回文本内容 return Content ...