《NVMe-over-Fabrics-1_0a-2018.07.23-Ratified》阅读笔记(3)-- 命令
3 命令
Fabrics命令用于创建队列和初始化controller。Fabrics命令的Opcode字段填写0x7F。无论controller是否处于使能状态(CC.EN)Fabrics命令都会被处理。Fabrics命令capsule在第2.1章节中定义,Fabrics应答capsule和状态在第2.2章节中定义。

3.1 认证接收命令和应答
Authentication Receive命令传输状态和一个或多个前边提交到controller的Authentication Send命令的数据结果。
Authentication Receive命令与前边Authentication Send命令之间的关联关系依赖于安全协议。传输数据的格式依赖于安全协议。安全协议详情请参考SPC-4。
Authentication Receive命令返回符合安全协议规则定义的Authentication Send命令的恰当数据。如果controller和主机之间出现通信丢失,或发生了Controller Level Reset,Authentication Receive命令数据不能保留。



3.2 认证发送命令和应答
Authentication Send命令用于传输安全协议数据到controller。传输的数据结构作为命令的一部分包括controller要执行的特定于安全协议的命令。数据结构可能包含与安全协议特定命令相关的数据或参数。对于Authentication Send命令提交的安全协议特定命令返回给主机的状态和数据,由Authentication Receive命令取回。
Authentication Send命令与随后Authentication Receive命令直接的关联依赖于在SPC-4中定义的Security Protocol字段。



3.3 连接命令和应答
Connect命令用于创建SQ和CQ队列对。如果Admin队列被指定,那么Connect命令建立一个主机和controller之间的关联关系。SQE(Submission Queue Entry)各字段的定义请参见Figure 19,数据部分的字段定义请参见Figure 20。
使用单个Host NQN的主机可以利用多个Host Identifier指派为彼此独立的(例如,主机的物理或逻辑划分)主机个体来访问一个NVM subsystem。或者选择另一种方式,一个主机可以使用多个Host NQN值被NVM subsystem作为独立的主机来对待。
NVM subsystem不能在0xFFF0~0xFFFF范围内申请Controller ID来作为Connect命令completion的有效Controller ID。如果NVM subsystem中的任何controller都不允许与这个主机建立关联,那么返回Connect Invalid Host。
如果NVM subsystem支持动态controller模式,那么:
- 对Admin队列在Connect命令中必须指定0xFFFF作为Controller ID,否则返回Invalid Field in Command状态值;
- NVM subsystem必须向主机返回一个可用的controller,在Connect应答中标明申请到的Controller ID。
如果NVM subsystem支持静态controller模式,那么:
- 对于Admin队列,主机可以在Connect命令中请求一个指定的controller。如果主机不允许与指定的这个controller建立关联,那么返回Connect Invalid Host状态;
- 在Admin队列上值为0xFFFE的Controller ID表示可以给申请任意的Controller ID,申请到的Controller ID在Connect应答中返回;
- 对于Admin队列,如果主机指定Controller ID值为0xFFFF,那么返回Connect Invalid Parameters状态值。
NVM subsystem可以为特定的主机申请特定的controller。如果主机请求的controller不是为这个主机申请的,那么返回Connect Invalid Host状态值。
在与controller的I/O队列建立连接之前,主机必须与一个controller建立起关联并且使能controller。如果在controller被使能之前,主机发送Connect命令为I/O队列指定一个Queue ID,那么返回Connect Invalid Parameters状态值。如果主机发送Connect命令中为Admin队列或I/O队列指定的Queue ID已经被创建,那么返回Command Sequence Error状态值。
如果Host Identifier,Host NQN,NVM Subsystem NQN,Controller ID为I/O队列指定,但与主机和controller之间已经建立关联中那个Admin队列指定的值不相同,那么返回Connect Invalid Parameters状态值。如果Host NQN或NVM Subsystem NQN值与NVM subsystem所配置的值不匹配,那么返回Connect Invalid Parameters状态值。如果Host NQN或NVM Subsystem NQN值(NQN值的格式参考NVMe基础规格说明书第7.9章节)有语法错误,那么返回Connect Invalid Parameters状态值。如果Host Identifier为0,那么返回Connect Invalid Parameters状态值。


Connect应答为Connect命令提供状态。如果连接已经被建立,那么为主机申请到的Controller ID被返回。Connect应答格式定义请参见Figure 21。
对于一个失败的Connect命令,controller不得:
- 返回Invalid Field in Command状态值;
- 向Error Infomation Log中添加条目。


3.4 Property Get命令和应答
Property Get命令用于主机获得指定的property值。Property Get命令各字段的定义在Figure 23中。如果指定了一个无效的property或无效的偏移量,那么应该返回Invalid Field in Command状态值。

Property Get应答用于返回给主机那个请求的property值。Property Get应答格式在Figure 24中定义。

3.5 Property Set命令和应答
Property Set命令用于设置一个property值。Property Set命令各字段的定义在Figure 25中。如果指定了一个无效的property或无效的偏移量,那么应该返回Invalid Field in Command状态值。


Property Set应答为Property Set命令提供状态。Property Set应答在Figure 26中定义。

3.5.1 Property定义
一个property占controller属性的四个字节或八个字节。属性可以读、写、或读/写访问。主机访问property时必须从起始位置加偏移量用原生宽度来访问。【就是说访问时从开始位置加偏移量找到这个property,然后根据具体property的长度一次访问四个字节或八个字节】。所有保留的property或property中保留的某些bit位都是只读的,读取时返回0。Property们也许可以用Property Get命令读,也许可以用Property Set命令写。
property地址范围从0到0xFFF,是对等于NVMe over PCIe中定义的寄存器功能而保留的。从0x1000到0x12FF的property地址范围是被NVMe over Fabrics保留的定义内容。为NVMe over PCIe定义的门铃寄存器在NVMe over Fabrics中是不支持的。
Figure 27指定的这些property是被NVMe over Fabrics支持的。

《NVMe-over-Fabrics-1_0a-2018.07.23-Ratified》阅读笔记(3)-- 命令的更多相关文章
- 《NVMe-over-Fabrics-1_0a-2018.07.23-Ratified》阅读笔记(1)
1 引言(入门介绍) NVMe版本1.2.1和之前的版本为主机软件与非易失存储系统通过PCIe通信定义了寄存器级接口.本规格说明书定义了对NVMe的扩展,启用通过其他网络互联上的操作(NVMe ove ...
- 《NVMe-over-Fabrics-1_0a-2018.07.23-Ratified》阅读笔记(4)-- Controller Architecture
4 Controller架构 NVMe over Fabrics使用与NVMe基础规格说明书中定义相同的controller架构.这包括主机和controller之间使用SQ提交队列和CQ完成队列来执 ...
- 2018.07.23 codeforces 438D. The Child and Sequence(线段树)
传送门 线段树维护区间取模,单点修改,区间求和. 这题老套路了,对一个数来说,每次取模至少让它减少一半,这样每次单点修改对时间复杂度的贡献就是一个log" role="presen ...
- 2018.07.23 洛谷P4097 [HEOI2013]Segment(李超线段树)
传送门 给出一个二维平面,给出若干根线段,求出x" role="presentation" style="position: relative;"&g ...
- 2018.07.23[PA2015]Siano(线段树)
[PA2015]Siano 描述 Description 农夫Byteasar买了一片n亩的土地,他要在这上面种草. 他在每一亩土地上都种植了一种独一无二的草,其中,第i亩土地的草每天会长高a[i]厘 ...
- 2018.07.23 hdu5828 Rikka with Sequence(线段树)
传送门 这道题维护区间加,区间开根,区间求和. 线段树常规操作. 首先回忆两道简单得多的线段树. 第一个:区间覆盖,区间加,区间求和. 第二个:区间开根,区间求和. 这两个是名副其实的常规操作. 但这 ...
- 2018.07.23 洛谷P4513 小白逛公园(线段树)
传送门 线段树常规操作了解一下. 单点修改维护区间最大连续和. 对于一个区间,维护区间从左端点开始的连续最大和,从右端点开始的连续最大和,整个区间最大和,区间和. 代码如下: #include< ...
- NVMe over Fabrics 协议Discovery服务交互过程跟踪
Discovery服务过程跟踪 对于NVMe over Fabrics的subsystem,有两种类型:Discovery子系统和NVM子系统.这里介绍与Discovery子系统相关的交互内容(即:在 ...
- NVMe over Fabrics:概念、应用和实现
对于大部分人来说,NVMe over Fabrics(简称NVMf)还是个新东西,因为其第一个正式版本的协议在今年6月份才发布.但是这并不影响人们对NVMf的关注,因为这项依托于NVMe的技术很可能继 ...
随机推荐
- OHEM论文笔记
目录 引言 Fast R-CNN设计思路 一.动机 二.现有方案hard negative mining 及其窘境 hard negative mining实现 窘境 设计思路 OHEM步骤: 反向传 ...
- nodejs编程优化
如何编写优化的 JavaScript 对象属性的顺序:始终以相同的顺序实例化对象属性,以便共享的隐藏类和随后优化的代码可以共享之. 动态属性:在实例化之后向对象添加属性将强制执行隐藏的类更改,并降 ...
- JavaScript自学笔记(2)---function a(){} 和 var a = function(){}的区别(javascript)
function a(){} 和 var a = function(){}的区别: 学习做浮窗,看到别人的代码里有: window.onresize = function(){ chroX = doc ...
- opencv —— split、merge 通道的分离与合并
对于三通道或四通道图像,有时要对某一通道的像素值进行修改或展示,这就需要进行通道分离操作.修改后,若要进行结果展示,就需要重新将各通道合并. 通道分离:split 函数 void split (Inp ...
- 关于 DP 的一些内容
0.关于 动态规划是编程解题的一种重要手段.1951 年美国数学家 R.Bellman 等人,根据一类多阶段问题的特点,把多阶段决策问题变换为一系列互相联系的单阶段问题,然后逐个加以解 ...
- VUE项目编译和打包问题
今天VPN不好使,所以准备看一下VUE前端的代码.因为是乙方新发过来的,所以想着先把代码跑起来.结果发现发过来的代码里没有node_modules. 解决方式 npm install express ...
- 二、JVM之体系结构
一.JVM的架构模型 Java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构. 具体来说这两种架构之间的区别: 基于栈式架构的特点 设计和实现更简单,适 ...
- 使用touch操作图片
功能: 1.图片放大缩小 2.图片移动 3.图片上做点标记 PS 1.后端程序员不容易,且行且珍惜 2.代码不想封装,累 js代码 /**************************calc pi ...
- StyleLint 使用指南
StyleLint 是『一个强大的.现代化的 CSS 检测工具』, 与 ESLint 类似, 是通过定义一系列的编码风格规则帮助我们避免在样式表中出现错误. 安装stylelint npm insta ...
- ip连接mysql时报不能连接
问题:springboot项目在用localhost连接mysql时没问题,但当localhost换成ip时出现 该问题:message from server: "Host 'DESKTO ...