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)-- 写命令的更多相关文章

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

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

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

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

  3. Python学习笔记(15)- os\os.path 操作文件

    程序1 编写一个程序,统计当前目录下每个文件类型的文件数,程序实现如图: import os def countfile(path): dict1 = {} # 定义一个字典 all_files = ...

  4. matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色

    一起来学matlab-matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 < ...

  5. matlab学习笔记8 基本绘图命令-三维绘图

    一起来学matlab-matlab学习笔记8 基本绘图命令_6 三维绘图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 ...

  6. matlab学习笔记8 基本绘图命令-LineSpec线条设定

    一起来学matlab-matlab学习笔记8 基本绘图命令_4 LineSpec线条设定 觉得有用的话,欢迎一起讨论相互学习~Follow Me 绘图函数接受线条设定作为参数并相应地修改生成的图形.您 ...

  7. matlab学习笔记8 基本绘图命令-特殊图形绘制

    一起来学matlab-matlab学习笔记8 基本绘图命令_3 特殊图形绘制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等 ...

  8. java之jvm学习笔记五(实践写自己的类装载器)

    java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...

  9. Hadoop源码学习笔记(6)——从ls命令一路解剖

    Hadoop源码学习笔记(6) ——从ls命令一路解剖 Hadoop几个模块的程序我们大致有了点了解,现在我们得细看一下这个程序是如何处理命令的. 我们就从原头开始,然后一步步追查. 我们先选中ls命 ...

  10. docker学习笔记二:常用命令

    docker学习笔记二:常用命令 查看docker常用命令 docker --help 返回结果如下: 其中常用的命令如下: 1.image相关操作 展示所有的image: 删除image: rmi ...

随机推荐

  1. Linux 任务计划,周期性任务执行

    未来的某个时间点执行一次某任务的命令:at,batch 命令执行的结果,会发送到任务发起者的邮箱 周期性运行某任务:crontab 命令执行的结果,会发送到任务发起者的邮箱 本地邮件服务 发邮件的协议 ...

  2. leetcode面试题 02.06. 回文链表,解题心路

    目录 leetcode面试题 02.06. 回文链表,解题心路 1.题目描述 2.java语言题解一 3.java语言题解二 4.C语言题解一 leetcode面试题 02.06. 回文链表,解题心路 ...

  3. TampeMonkey 关于 youtube的两个插件

    一个是 Video Speed Buttons 负责调速 一个是 YouTube Links  负责下载不同分辨率的视频

  4. linux中 nodejs 安装 sqlite3 出现的问题

    错误代码类似:Error: Cannot find module '/root/QuickNote/node_modules/sqlite3/lib/binding/node-v57-linux-x6 ...

  5. visual studio2010编译过程中出现COFF文件损坏的原因和方法总结

    一.现象描述 笔者在用visual studio2010进行控制台程序进行程序编译时候,经常会遇到代码代码没有语法错误,但是编译不通过的现象.系统报错为 LINK : fatal error LNK1 ...

  6. Java 【循环语句】

    一.java循环语句分支 二.for循环 在java中for循环和C的循环用法一样 public class demo{ public static void main(String[] args){ ...

  7. defender 书荐

    2018全年度推荐: 1.[法]大仲马——基督山伯爵 2.[美]加西亚·马尔克斯——百年孤独 3.[法]大仲马——三个火枪手 2019第一季度推荐: 1.霍达——穆斯林的葬礼 2.[苏联]尼·奥斯特洛 ...

  8. CentOS7安装gotoblas遇到的问题

    1. 错误信息: /usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: cannot find -l-l ...

  9. Windows下Anaconda安装、换源与更新

    Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.当你尝试pip install xxx时出现各种意外和依赖问题,那么conda就是一 ...

  10. 请求筛选模块被配置为拒绝包含双重转义序列的请求(.net core程序的‘web.config’调整)

    之前项目有一个静态文件特殊字符转义的报错(+变为 %2B),老是显示404  请求筛选模块被配置为拒绝包含双重转义序列的请求  .网上的大多数解决方案都是一下: https://www.cnblogs ...