《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条件已发生。

 

posted @ 2019-09-09 19:42  JamesLi_1119401255  阅读(739)  评论(0编辑  收藏  举报