【NVMe2.0b 14-6】Format NVM、Keep Alive、Lockdown command

2023-11-19

5.14Format NVM command

Format NVM 命令用于 low level format NVM media。主机使用此命令更改 NVM media 的属性(例如,NVM Command Set 的 LBA 数据大小和/或元数据大小)。low level format 可能会破坏与所有命名空间关联的所有数据和元数据,或者仅破坏与命令关联的特定命名空间(请参阅 Identify Controller data structure 中的 Format NVM Attributes 字段,Figure 275)。在 Format NVM 命令成功完成后,控制器不应返回任何先前包含在受影响命名空间中的 user data。

作为 Format NVM 命令的一部分,主机请求格式化操作,并可能请求 secure erase NVM 的内容(参见Figure 189 中的 SES 字段)。有两种类型的 secure erase。User Data Erase 会擦除 NVM 子系统中存在的所有user data。Cryptographic Erase通过删除先前加密用户数据的加密密钥来擦除 NVM 子系统中存在的所有user data。

格式化操作的范围和带secure erase的格式化范围取决于控制器支持的 Format NVM 命令的属性和命令中指定的 Namespace Identifier,如Figure 188 所述。secure erase 的类型(如果适用) , 基于Command Dword 10 中 Secure Erase Settings 字段的设置,如 Figure 189 中定义。

Figure 188: Format NVM – Operation Scope

在这里插入图片描述

如果 NVM 子系统支持多个domains,并且由于 NVM 子系统被划分(参见第 3.2.4 节)而导致 Format NVM 命令无法格式化指定的命名空间,则 Format NVM 命令应以状态码Asymmetric Access Inaccessible or Asymmetric Access Persistent Loss中止。

在security规范定义的情况下(例如,TCG Storage Interface Interactions 规范中指定的无效 security state),可以使用本规范中定义的状态代码中止 Format NVM 命令。如果有正在为命名空间处理的 I/O 命令,则提交的影响该命名空间的 Format NVM 命令可能会被中止;如果中止,则应返回 Command Sequence Error 的状态码。如果 Format NVM 命令正在进行,则为受该 Format NVM 命令影响的任何命名空间提交的 I/O 命令可能会被中止;如果中止,则应返回 Format in Progress 的状态码。有关 Format NVM 期间对Admin命令的限制的更多信息,请参阅第 5 节。

对于NSID 字段设置为 FFFFFFFFh 并指定secure erase 的Format NVM 命令:

  a) 如果 FNA 字段中的第 1 位设置为“1”(参见Figure 275)并且 NVM 子系统中没有命名空间,则该 Format NVM 命令应无错误地完成;
  b) 如果 FNA 字段中的第 1 位被清除为“0”并且没有attached的命名空间,则该 Format NVM 命令应无错误地完成。

对于 NSID 字段设置为 FFFFFFFFh 但未指定secure erase的 Format NVM 命令:

  a) 如果 FNA 字段中的第 0 位设置为“1”,并且 NVM 子系统中没有命名空间,则该 Format NVM 命令应完成且不会出错; 和
  b) 如果 FNA 字段中的bit 0 被清除为“0”并且没有attached的命名空间,则该 Format NVM 命令应完成且不会出错。

如果主机未在Host Behavior Support feature中将 LBA Format Extension Enable (LBAFEE) 字段设置为 1h(请参阅第 5.27.1.18 节),那么控制器中止 Format NVM 命令,指定 I/O Command Set 的特定格式,如适用的 I/O Command Set 规范中指定的,要求将 LBAFEE 字段设置为 1h,status code 为 Invalid Namespace or Format。

如果 FNA 字段中的第 3 位设置为“1”,并且 Format NVM 命令的 NSID 字段设置为 FFFFFFFFh,则控制器将中止命令,状态码为 Invalid Field In Command。

成功完成 Format NVM 命令后,Format NVM 命令中指定的设置(例如 PI、MSET、LBAF)将作为Identify Namespace data structures 的一部分报告。

Format NVM 命令使用 Command Dword 10 字段。保留所有其他命令特定字段。

Figure 189: Format NVM – Command Dword 10

在这里插入图片描述

在这里插入图片描述

5.14.1Command Completion

当 NVM media 格式完成时,完成队列条目将发布到 Admin Completion Queue。Format NVM 命令特定状态值在Figure 190 中定义。

Figure 190: Format NVM – Command Specific Status Values

在这里插入图片描述

5.18Keep Alive command

Keep Alive命令(参考第5.27.1.12节)和相关功能被主机用来确定控制器是否在运行,并被控制器用来确定主机是否在运行。当主机和控制器都可以访问并能够发出或处理命令时,它们就可以运行。控制器在Identify Controller data structure 中的KAS字段中指出Keep Alive Timer的粒度(参考Figure 275)。

如果在 Admin Queue 中enable了 Keep Alive Timeout,Keep Alive Timer 在以下情况下重新 enable:

  • 处理了一个 Keep Alive command (refer to section 3.9.1) ,或
  • 当TBKAS设置为 "1 "且在 Keep Alive Timeout Interval 内处理了一条管理命令或一条I/O命令时,Keep Alive Timeout结束时(refer to section 3.9.2)。

所有命令的特定字段都是reserved。

5.18.1Command Completion

在完成 Keep Alive 命令后,控制器应将 completion queue entry 发布到 Admin Completion Queue 中,表明该命令的状态。

5.19Lockdown command

Lockdown 命令用于 Command and Feature Lockdown capability(参考第8.4节),它配置了禁止或允许执行针对特定 Feature Identifier 的指定命令或 Set Features 命令。

在成功完成禁止命令或 Feature Identifier 的 Lockdown 命令后,NVM子系统中的所有控制器(如果适用)和所有 management endpoints(如果适用)的行为如8.4所述。

Lockdown 命令使用 Command Dword 10(参考 Figure 291)和 Command Dword(参考Figure 292)。所有其他命令的特定字段都是reserved。

Figure 291: Lockdown – Command Dword 10

在这里插入图片描述

在这里插入图片描述

如果控制器支持选择UUID:

  a)通过 Lockdown 命令;以及
  b)如果Scope字段被设置为2h,通过 Set Features 命令(参考 Figure 316 和第8.24节),为 Opcode or Feature Identifier 字段指定 vendor specific Feature Identifier。

那么 Command Dword 14(参考Figure 292)被用来指定一个 UUID Index 值。

如果控制器不支持选择UUID:

  a)通过 Lockdown 命令。
  b)通过Set Features 命令;或
  c)如果Scope字段被设置为2h,由 Opcode or Feature Identifier 字段指定的 vendor specific feature identifier。

则 Command Dword 14 不指定 UUID Index 值。如果 Scope 字段没有设置为2h,那么 UUID Index 字段将被忽略。

Figure 292: Lockdown – Command Dword 14

在这里插入图片描述

如果控制器在处理此命令时指定了不支持的 command opcode 或 Feature Identifier 为prohibitable,那么该命令应以 Prohibition of Command Execution Not Supported 的状态码中止。

如果控制器处理此命令时,Interface 字段设置为01b或10b,并且NVM子系统不包含 Management Endpoint,那么该命令应以 Invalid Field in Command 状态码中止。

如果控制器在 Interface 字段设置为 00b 或 01b,且 Scope 字段设置为 4h 的情况下处理此命令,则应以 Invalid Field in Command 状态码中止。

试图禁止已经被禁止执行的命令或 Feature Identifier,或允许执行已经被允许的命令或 Feature Identifie,都不是错误。

5.19.1Command Completion

Lockdown 命令完成后,控制器将一个 completion queue entry 发布到 Admin Completion Queue 中。

Lockdown 命令的具体态值定义在Figure 293中。

Figure 293: Lockdown – Command Specific Status Values

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【NVMe2.0b 14-6】Format NVM、Keep Alive、Lockdown command 的相关文章

  • 将二叉树转换成双向链表

    输入一棵二叉搜索树 将该二叉搜索树转换成一个排序的双向链表 要求不能创建任何新的节点 只能调整树中节点指针的指向 因为二叉搜索树每个节点都有两个指针 分别是指向其左子节点和右子节点 所以将该节点的左子节点变成双向链表中的左节点 将该节点的右
  • 【数据结构】详解栈的应用之表达式求值

    首先明白 前缀表达式 符号在前 如 3456 中缀表达式 符号在中间 如 3 4 5 6 后缀表达式 符号在最后 如34 5 6 后缀表达式不出现括号 中缀表达式转后缀表达式的方法 1 遇到数字 直接输出 添加到后缀表达式中 2 栈为空时
  • python 关联图谱_机器学习算法与Python实践 - 知识图谱

    机器学习 人工智能 知识图谱 可以为自己建立一个机器学习的知识图谱 并争取掌握每一个经典的机器学习理论和算法 简单地总结如下 1 回归算法 多元自适应回归样条 MultivariateAdaptive Regression Splines

随机推荐

  • gmtime与localtime的区别

    目录 gmtime函数 linux环境下 window环境下 localtime函数 gmtime函数 gmtime转换的时间是UTL时间 与北京时间相差了8个小时 如果你想要得到北京时间 不建议你将gmtime转换后的时间直接加上八个小时
  • 小游戏开发:使用 React 和 Redux Tool Kit 实现俄罗斯方块

    大家好 我是若川 我持续组织了近一年的源码共读活动 感兴趣的可以 点此扫码加我微信 lxchuan12 参与 每周大家一起学习200行左右的源码 共同进步 同时极力推荐订阅我写的 学习源码整体架构系列 包含20余篇源码文章 历史面试系列 另
  • 进制图像的莫拉尔距离图

    进制图像的莫拉尔距离图 莫拉尔距离图是一种计算图像中对象之间距离的方法 通常用于形态学分析和图像处理的应用中 它可以帮助我们量化图像中不同对象之间的距离 并用于图像分割 边缘检测等任务 本文将介绍如何使用C C 语言实现进制图像的莫拉尔距离
  • 区块链技术与应用实验报告(实验六)

    文章目录 区块链技术与应用实验报告 实验六 关于作者 作者介绍 一 实验目的 二 实验原理简介 三 实验环境 四 实验步骤 1 访问 bitaddress org 等待网页跳转完毕 2 生成两对地址和私钥 3 生成一对新的地址和私钥 4 访
  • 彻底搞懂Vue中的Mixin混入

    1 什么是Mixin 其实Mixin不是Vue专属的 可以说它是一种思想 通俗点讲就是混入 在很多开发框架中都实现了Mixin 混入 我们这里主要讲解的是Vue中的Mixin 大白话解释 将组件的公共逻辑或者配置提取出来 哪个组件需要用到时
  • JS中的声明提升

    变量声明提升 使用var关键字声明的变量 会在所有的代码执行之前被声明 如果声明变量时未使用var关键字 变量不会被提前声明 console log a 输出undefined var a 1 等同于 var a console log a
  • RabbitMQ下的生产消费者模式与订阅发布模式

    所谓模式 就是在某种场景下 一类问题及其解决方案的总结归纳 生产消费者模式与订阅发布模式是使用消息中间件时常用的两种模式 用于功能解耦和分布式系统间的消息通信 以下面两种场景为例 数据接入 假设有一个用户行为采集系统 负责从App端采集用户
  • protobuf C#编译

    protobuf C 编译 标签 protobufc 2016 08 30 23 22 342人阅读 评论 1 收藏 举报 分类 工作记录 2 版权声明 本文为博主原创文章 未经博主允许不得转载 1 下载protobuf代码 https g
  • GO语言篇之CGO

    GO语言篇之CGO 文章目录 GO语言篇之CGO 前言 C代码嵌入GO代码 C文件嵌入GO代码 缺点 前言 Go语言可以通过内置的CGO调用C语言接口 从而实现C语言代码的交互 CGO提供了一种将Go代码嵌入到C代码中 或者从Go代码中调用
  • spring的事务配置详解

    接下来我将给大家介绍spring事务配置的两种方式 1 基于XML的事务配置 2 基于注解方式的事务配置 前言 在我们详细介绍spring的两种声明式事务管理之前 我们需要先理解这些概念 1 spring的事务管理是通过Aop的方式来实现
  • 不同cpu平台互传docker镜像

    说明 不同的平台之间docker镜像不能共用 假如使用mac pull的镜像 load 到amd平台上不能使用 但是可以在pull镜像使用 platform linux amd64 pull amd64 架构的镜像 docker pull
  • 西门子S7-1200 PLC选型前这些要了解

    西门子S7 1200PLC是西门子S7系列PLC产品中一员 S7系列产品包含有 S7 200 Smart 200 S7 1200 S7 300 S7 1500 S7 400等系列PLC 其中S7 200 Smart 200 S7 1200系
  • Jetson TX2刷JetPack3.3(方法二)

    官网上的刷机教程都是需要一个路由器才能刷机 这篇博客介绍如何不要路由器 只需要一个宿主机就可以刷机的教程 1 刷机准备工作 JetPack是一个x86二进制文件 不能在基于ARM的机器上运行 因此需要借助一个宿主机来刷JetPack 因此
  • 数据结构模板

    链接
  • Github-Copilot初体验-Pycharm插件的安装与测试

    引言 80 代码秒生成 AI神器Copilot大升级 最近copilot又在众多独角兽公司的合力下 取得了重大升级 GitHub Copilot发布还不到两年 就已经为100多万的开发者 编写了46 的代码 并提高了55 的编码速度 据官博
  • Quartus导出网表文件:.qxp和.vqm

    当项目过程中 不想给甲方源码时 该如何 我们可以用网表文件qxp或者vqm对资源进行保护 下面讲解这两个文件的具体生成步骤 一 基本概念 QuartusII的qxp文件为QuartusII Exported Partition 用于创建综合
  • c#float取小数点后两位_C# 保留小数点后两位(方法总结)

    最简单使用 float i 1 6667f string show i ToString 0 00 结果1 67 四舍五入 其他类似方法 string show i ToString F F2 f 不区分大小写 string show St
  • SpringBoot集成Swagger4

    Swagger是一种工具 可以帮助开发人员设计 构建 文档化和测试 RESTful Web 服务 Swagger提供了一种交互式文档格式 可以使用它来了解 API 的用法 参数 返回值等等 Spring Boot提供了集成Swagger的简
  • Servlet接口实现类

    JavaWeb 03 Servlet 02 Servlet接口实现类 1 什么是Servlet接口 有什么用 Servlet接口来自于Servlet规范中的一个接口 这个接口存在于Http服务器所提供的jar包中 Servlet接口的具体位
  • 【NVMe2.0b 14-6】Format NVM、Keep Alive、Lockdown command

    目录 5 14Format NVM command 5 14 1Command Completion 5 18Keep Alive command 5 18 1Command Completion 5 19Lockdown command