《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(6.15)-- 写命令
6.15 Write command 写命令
写命令写数据和元数据,如果适用介质,发到逻辑块相应的I/O controller。主机也可以指定保护信息,作为操作的一部分包含进来。
命令用Command Dword 10,Command Dword 11,Command Dword 12,Command Dword 13,Command Dword 14,和Command Dword 15区域。如果命令使用PRPs传输数据,那么元数据指针,PRP Entry 1,和PRP Entry 2 域就被使用。【注:NVMe over Fabrics不使用PRP】。如果命令使用SGLs传输数据,那么元数据SGL Segment Pointer和SGL Entry 1域就被使用。

【为帮助直观理解,下图参照linux-5.2.9代码定义,黄色线框内,右侧是把Command Dword10~15定义成了相应内容字段】

Command Dword10~11这64位作为一个变量,其数值表示SLBA逻辑块地址起始位置(表示从0开始的第几个逻辑块)。
Command Dword12被分成两部分:
(1)前16位作为一个 变量,其数值表示逻辑块的数(Number of Logical Blocks),注意:这个数值是基于0开始的,即nvme_rw_command.length值为0时表示写一个逻辑块,值为自然数n时表示写n+1个逻辑块。
(2)后16位表示控制信息,依次分别为:4bit保留,4bit表示Directive Type(DTYPE),2bit保留,4bit表示Protection Information Field(PRINFO),1bit表示Force Unit Access(FUA),1bit表示Limited Retry(LR)。
Command Dword13用于DataSet管理
Command Dword14表示Inital Logical Block Reference Tag(ILBRT),此域字段仅用于格式化为端到端保护的namespace的情况。
Command Dword15仅用于端到端保护的情况,此Dword分为两部分:
(1)前16位表示Logical Block Application Tag(LBAT)。
(2)后16位表示Logical Block Application Tag Mask(LBATM)。






6.15.1 命令完成Command Completion
当命令完成不论成功还是失败,controller都应该发送一个表明命令状态的CQE到关联的I/O CQ完成队列。
写命令特定的错误定义在Figure 406中。

------------------------------------------------------------
【实验】
1、把test.log文件中的内容写入/nvme0n1盘中,参数-d表示指定data file,-z 10表示指定写入的字节数;
2、写成功后,再读出来,-z 10指定读10个字节。

3、实验时用的nvme over tcp,可以用wireshark查看命令内容,有下图可以看出,虽然-z指定了写10个字节,内容是HelloWorld,但还是向namespace1的逻辑块1写入了512字节。

4、读命令

《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(6.15)-- 写命令的更多相关文章
- 2019/1/10 redis学习笔记(二)
本文不涉及集群搭建操作 关于在lua脚本中操作redis的应用场景 大家都知道redis对于单个集合的操作是原子性的;但是有可能有一种场景是这样.比如说抢红包,现在有十个人抢五份红包,抽象到我们jav ...
- 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承
<Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...
- Python学习笔记(15)- os\os.path 操作文件
程序1 编写一个程序,统计当前目录下每个文件类型的文件数,程序实现如图: import os def countfile(path): dict1 = {} # 定义一个字典 all_files = ...
- matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色
一起来学matlab-matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 < ...
- matlab学习笔记8 基本绘图命令-三维绘图
一起来学matlab-matlab学习笔记8 基本绘图命令_6 三维绘图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 ...
- matlab学习笔记8 基本绘图命令-LineSpec线条设定
一起来学matlab-matlab学习笔记8 基本绘图命令_4 LineSpec线条设定 觉得有用的话,欢迎一起讨论相互学习~Follow Me 绘图函数接受线条设定作为参数并相应地修改生成的图形.您 ...
- matlab学习笔记8 基本绘图命令-特殊图形绘制
一起来学matlab-matlab学习笔记8 基本绘图命令_3 特殊图形绘制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等 ...
- java之jvm学习笔记五(实践写自己的类装载器)
java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...
- Hadoop源码学习笔记(6)——从ls命令一路解剖
Hadoop源码学习笔记(6) ——从ls命令一路解剖 Hadoop几个模块的程序我们大致有了点了解,现在我们得细看一下这个程序是如何处理命令的. 我们就从原头开始,然后一步步追查. 我们先选中ls命 ...
- docker学习笔记二:常用命令
docker学习笔记二:常用命令 查看docker常用命令 docker --help 返回结果如下: 其中常用的命令如下: 1.image相关操作 展示所有的image: 删除image: rmi ...
随机推荐
- Shiro -- (三) 自定义Realm
简介: Realm:域,Shiro 从从 Realm 获取安全数据(如用户.角色.权限),就是说 SecurityManager 要验证用户身份,那么它需要从 Realm 获取相应的用户进行比较以确定 ...
- .Net core webapi使用httpClient发送异步请求遇到TaskCanceledException: A task was canceled
前言:本人最近较多使用.net core的项目,最近在使用httpClient发送请求的时候,遇到服务器处理时间较长时,就老是会报异常:TaskCanceledException: A task wa ...
- 显示层封装及实现与优化(无动画+css3动画+js动画)
showhide.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- 【算法】蓝桥杯 试题 基础练习 Huffuman树
资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, …, ...
- VSCode 完美整合前后端框架(angular2+.NET core)
首先打开命令行查看本地.NET版本. 通过命令行安装模板. dotnet new --install Microsoft.AspNetCore.SpaTemplates::* 创建demo目录,并用v ...
- MySQL快速回顾:数据库和表操作
前提要述:参考书籍<MySQL必知必会> 利用空闲时间快速回顾一些数据库基础. 4.1 连接 在最初安装MySQL,可能会要求你输入一个管理登录(通常为root)和一个口令(密码). 连接 ...
- c 指针改变数字
之前已经有了: gcc -c day4.c -Wall gcc -o day4.exe day4.o 所以才会有以下结果
- [Contract] public、external, private、internal 在 Solidity 中如何选择
合约内部访问的用 private,修饰内部变量时选择.通过 external 函数返回. 合约内部.外部均可访问的用 public. 仅在合约外部访问的用 external,明确暴露给前端使用时选择. ...
- hdu 1011 Starship Troopers(树上背包)
Problem Description You, the leader of Starship Troopers, are sent to destroy a base of the bugs. Th ...
- sql查询如何将A表数据name字段对应B表name字段得到对应的B表id主键然后添加A到表usel_id中
1.写这个的原因 最近在写公司项目的时候一个功能很是让我头疼如标题看到的一样,平时我们一般都只负责数据表的查询或者连表查询某一个字段和A表字段一起显示出来. 但是添加到A表还是头一次,第一天想了很久都 ...