【NVMe2.0d 17 - 1】Reservation 介绍

news2024/11/27 4:38:27

文章目录

  • 关键词
  • 概述
  • Reservation 类型
  • Reservation Notifications
  • Set Features Reservation Notification Mask (Feature Identifier 82h)
  • Set Features Reservation Persistence (Feature Identifier 83h)

关键词

Reservation: Reservation
Host:主机
Namespace:命名空间
NVM Subsystem: NVM子系统
Mask: 屏蔽

概述

NVM Express reservations提供的capabilities可由两个或更多的主机利用,以协调对共享命名空间的访问。对这些功能的不正确应用可能会破坏数据和/或损害系统的运行

对一个命名空间的 reservations限制了主机对该命名空间的访问。如果主机在有 reservations 的情况下向命名空间提交命令,并且缺乏足够的权限,那么该命令会被控制器中止,状态码为 Reservation Conflict。如果主机在存在对受该命令影响的任何命名空间的 reservations 的情况下提交NSID设置为FFFFFFFh的命令,并且该主机在所有受影响的命名空间上缺乏足够的权限,那么该命令会被控制器中止,状态码为 Reservation Conflict。提供的capabilities允许从失败或不合作的主机持有的命名空间上的 reservations中恢复。

Example Multi-Host System

Example Multi-Host System

reservation需要在主机和命名空间之间建立关联。如Figure 471所示,多路径I/O和命名空间共享环境中的每个控制器正好与一个主机相关联,有可能构建两个或更多的主机共享一个控制器的系统

一个主机可以与多个控制器相关联。在Figure 471中,主机A与两个控制器相关,而主机B和C分别与一个控制器相关。在执行任何与reservation有关的操作之前,主机使用Set Features命令与该主机所关联的每个控制器注册一个Host Identifier。Host Identifier允许NVM子系统识别与同一主机相关联的控制器,并在这些控制器之间保留reservation属性(即,无论与该主机相关的哪个控制器处理该命令,主机发出的命令都具有相同的reservation 权限)。

组成一个NVM子系统的控制器应该对reservation有同样的支持。尽管强烈鼓励,但组成NVM子系统的命名空间并不要求对reservation有同样的支持。例如,单个控制器中的一些命名空间可能支持reservation,而其他命名空间不支持,或者支持的reservation类型在命名空间中可能不同。如果一个控制器支持reservation,那么该控制器应:

  • 在 Identify Controller data structure中的Optional NVM Command Support (ONCS)字段的bit 5返回 "1 "来表明对reservations的支持。
  • 支持Reservation Report命令、Reservation Register命令、Reservation Acquire命令和 Reservation Release命令。
  • 支持 Reservation Notification log page。
  • 支持 Reservation Log Page Available asynchronous events。
  • 支持 Reservation Notification Mask Feature。
  • 支持 Host Identifier Feature;以及
  • 支持 Reservation Persistence Feature

如果一个命名空间支持reservations,那么该命名空间应:

  • 在Identify Namespace data structure中的Reservation Capabilities(RESCAP)字段中报告一个非零值。
  • 支持 Persist Through Power Loss(PTPL)状态;以及
  • 支持足够的资源,允许主机在NVM子系统的每个控制器上成功注册一个reservation key,并能访问共享命名空间(即,Reservation Register命令不得因缺乏资源而失败)

注意:忽略Existing Key的行为已经改变,以提高与基于SCSI实现的兼容性。对修改后的行为的一致性在Identify
Namespace data structure 的Reservation
Capabilities(RESCAP)字段中显示。关于忽略Existing Key行为的先前定义,请参考NVM Express Base Specification revision 1.2.1。

Reservation 类型

NVMe接口支持6种reservations:

  • Write Exclusive;
  • Exclusive Access;
  • Write Exclusive - Registrants Only;
  • Exclusive Access - Registrants Only;
  • Write Exclusive - All Registrants; and
  • Exclusive Access - All Registrants.
Figure 472: Command Behavior in the Presence of a Reservation

在这里插入图片描述

这些 reservation 类型之间的区别是:被排除的访问类型(即写或所有访问),registrants是否拥有与 reservation holder相同的访问权,以及registrants是否也被视为 reservation holder。Figure 472中总结了这些差异,Figure 473.中显示了每个NVM Express命令的具体行为。

Reservations和registrations在所有Controller Level Resets和所有NVM Subsystem Resets中都会持续存在,除了由于断电的reset。 reservation 可以被选择性地配置为使用 Persist Through Power Loss State(PTPLS)在掉电复位时 reservation 。一个Persist Through Power Loss State(PTPLS)与每个支持reservations的命名空间相关联,可以作为Reservation Register命令或Set Features命令的副作用来修改。

Figure 473: Command Behavior in the Presence of a Reservation

在这里插入图片描述

A=Allowed, 控制器正常处理的命令
C=Conflict, 命令被控制器中止,状态码为Reservation Conflict
All other command 是指 Vendor specific 的命令


Reservation Notifications

有三种类型的reservation notifications:注册抢占(registration preempted)、reservation 释放(reservation released)和 reservation 抢占(reservation preempted)。导致reservation notifications发生的条件将在以下章节中描述。每当与控制器相关的命名空间上发生 unmasked reservation notifications时,就会创建一个Reservation Notification log page。reservation notifications可以通过 Reservation Notification Mask feature,在每个reservation notifications类型和每个NSID的基础上屏蔽reservation notifications的生成。主机可以使用Asynchronous Event Request命令来通知一个或多个可用的Reservation Notification log pages的存在。

Set Features Reservation Notification Mask (Feature Identifier 82h)

如果命名空间支持 reservations,即 Identify Namespace data structure 中的 Reservation Capabilities(RESCAP)字段非零,则必须支持这个 Feature。

此 Feature 在每个命名空间的基础上控制对 reservation notifications 的屏蔽。只要在命名空间上发生 reservation notifications,并且相应的 reservation notifications 类型没有被此 Feature 在该命名空间上屏蔽,就会创建一个 Reservation Notification log page。如果控制器支持reservations,则应支持此Feature。这些属性在 Command Dword 11 中指定。

使用 FFFFFFFFh 以外的 namespace ID 的 Set Features 命令只修改相应命名空间的 reservation notification mask。使用 namespace ID 为 FFFFFFFFh 的 Set Features 命令会修改athach到控制器并支持reservations的所有命名空间的 reservation notification mask。使用 FFFFFFFFh 以外的 namespace ID 的 Get Features 命令将返回相应命名空间的 reservation notification mask。使用 namespace ID 为 FFFFFFFFh 的 Get Features 命令应被中止,状态码为 Invalid Field in Command。如果Set Features命令或Get Features命令试图访问不支持reservations或无效的命名空间上的 reservation notification mask,那么该命令将被中止,状态码为Invalid Field in Command。

如果Get Features命令成功地完成了这个Feature,Figure 367中指定的属性将在该命令的 completion queue entry 的 Dword 0 中返回。

Figure 367: Reservation Notification Configuration – Command Dword 11
BitsDescription
31:04Reserved
03Mask Reservation Preempted Notification (RESPRE): 如果为’1’,则屏蔽控制器的reservation preempted通知 的报告。如果为’0’,那么通知就不会被屏蔽,只要发生通知,就会创建一个 Reservation Notification log page。
02Mask Reservation Released Notification (RESREL): 如果为’1’,则屏蔽控制器 Reservation Released 通知的报告。如果为’0’,那么通知就不会被屏蔽,只要发生通知,就会创建一个 Reservation Notification log page
01Mask Registration Preempted Notification (REGPRE): 如果为’1’,则屏蔽控制器的 registration preempted 通知的报告。如果为’0’,那么通知不被屏蔽,只要通知发生,就会创建一个 Reservation Notification log page
0Reserved

Set Features Reservation Persistence (Feature Identifier 83h)

每个支持 reservations 的命名空间都有一个Persist Through Power Loss(PTPL)的状态,可以使用Set Features命令或Reservation Register命令进行修改 Reservation Persistence feature属性在 Command Dword 11 中指定。

PTPL state包含在特定命名空间的Reservation Persistence Feature中。使用namespace ID FFFFFFFFh的Set Features命令会修改与attach到控制器并支持PTPL(即支持reservations)的所有命名空间相关的PTPL state。使用 FFFFFFFFh 以外的valid namespace ID 且其对应一个支持reservations的命名空间的 Set Features 命令,会修改该命名空间的 PTPL state。***使用namespace ID为FFFFFFFh的Get Features命令应被中止,状态码为Invalid Field in Command。***使用 FFFFFFFFh 以外的valid namespace ID 并对应于支持 PTPL 的命名空间的 Get Features 命令,会返回该命名空间的 PTPL state。如果Set Features命令或Get Features命令使用FFFFFFFFh以外的namespace ID,试图访问不支持该 Feature Identifier 的命名空间的PTPL state,那么该命令将被中止,状态码为Invalid Field in Command。

这个Feature不应是 saveble。如果这个Feature 是 saveable,那么主机应该把当前值和保存的值设置为相同的值。

如果 Get Features 命令成功地完成了这个 Feature Identifier,Figure 368中指定的属性将在该命令的 completion queue entry 的Dword 0中返回。

Figure 368: Reservation Persistence Configuration – Command Dword 11
BitsDescription
31:01Reserved
00Persist Through Power Loss (PTPL): 如果为’1’,那么reservations和registrants在断电时持续存在。如果为’0’,那么reservations会被release,registrants将在断电时被清除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/793935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 核心编程

一、 内存分区模型 C程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放,存放函数的参数值、…

小程序如何将商品添加到分类

​将商品添加到分类是非常重要的功能,可以让商家更方便地管理分类和商品。下面将具体介绍如何将产品添加到分类中。 步骤一:选中商品 在个人中心点击管理入口,然后找到“商品管理”菜单并点击。找到需要添加的商品,然后选中它。…

初识C++——关键字,输入输出,函数名修饰,引用

文章目录 C的常用关键字C的输入输出C支持重载的原理------名字修饰windows下的名字修饰规则 引用引用的概念引用的特点使用场景做参数 做返回值常引用 C的常用关键字 C的常用关键字一共有63个,其中包括有C语言的关键字,这些关键字我们在后面的文章中都会…

如何高效实现文件传输:小文件采用零拷贝、大文件采用异步io+直接io

一般会如何实现文件传输? 服务器提供文件传输功能,需要将磁盘上的文件读取出来,通过网络协议发送到客户端。如果需要你自己编码实现这个文件传输功能,你会怎么实现呢? 通常,你会选择最直接的方法&#xf…

嵌入式学习_Day 003

程序功能介绍 c #include <stdio.h> int main() {char c,ll;printf("please enter a capital letter:");cgetchar();getchar();if (c>A&& c<Z) {llc32;printf("Lowercase letter output:%c\n",ll);printf("ASCII value:%d\n"…

阿含经人物传记知识图谱与问答系统设计20230725(进行中)

基本思路—— 1 数据提取 以《房山石经》阿含经为核心&#xff0c;提取经文索引、内容、关键词等数据&#xff0c;构成excel数据&#xff1b; 2 数据清洗 从数据库中重新建构角色画像数据&#xff0c;形成佛、辟支佛、尊者、比丘、比丘尼……等各类人物数据 3 数据映射&…

缠论线段的划分

第一种情况&#xff1a; 第二种情况&#xff1a; 第二种情况中的特例&#xff1a; 第二种情况的特例&#xff1a; 顶分型成立&#xff1a; 向上线段延续&#xff1a; 顶分型后面底分型&#xff0c;形成三段 插入一个分型的反面例子&#xff1a; dd

软件测试外包公司怎么选?CMA/CNAS软件测试报告的优势

在当前信息化和全球化的背景下&#xff0c;软件测试外包公司是很多企业选择的一种方式。因为软件测试外包公司具备丰富的专业能力和经验&#xff0c;能够提供高质量的测试服务。同时&#xff0c;外包公司可以根据客户需求灵活组织测试团队&#xff0c;并且能够及时响应和处理问…

微信怎么批量删除好友?

今天我们来说说微信怎么批量删除好友。 为什么会想要说这个呢&#xff0c;原因是我有一个朋友离职后发朋友圈求助说离职后怎么把前同事们都删除。在日常使用微信中&#xff0c;相信也有些朋友对于一些毫不相关的好友想要删除掉。 一般的做法都是一个一个删除&#xff0c;但很繁…

上位机软件wincc通过工业网关采集plc数据实现组态监控

WinCC是一个组态软件&#xff0c;可以用于数据采集与监控、自动化控制、工业物联网等领域。WinCC可以帮助用户实现工厂自动化和过程自动化的解决方案&#xff0c;提供可视化的监控界面和数据采集分析功能&#xff0c;支持多种协议和设备&#xff0c;如Siemens、Modbus、OPC等。…

数据库应用:Redis持久化

目录 一、理论 1.Redis 高可用 2.Redis持久化 3.RDB持久化 4.AOF持久化&#xff08;支持秒级写入&#xff09; 5.RDB和AOF的优缺点 6.RDB和AOF对比 7.Redis性能管理 8.Redis的优化 二、实验 1.RDB持久化 2.AOF持久化 3.Redis性能管理 4.Redis的优化 三、总结 一、…

C# 数据结构】Heap 堆

【C# 数据结构】Heap 堆 先看看C#中有那些常用的结构堆的介绍完全二叉树最大堆 Heap对类进行排序实现 IComparable<T> 接口 对CompareTo的一点解释 参考资料 先看看C#中有那些常用的结构 作为 数据结构系类文章 的开篇文章&#xff0c;我们先了解一下C# 有哪些常用的数据…

进入元宇宙,半岛体育打开新世界大门

上赛季西甲联赛在新赛季开启之际,宣布与科技公司Stadio Plus合作,计划在元宇宙平台Decentraland的Vegas City打造西甲主题地块,与Z世代球迷更好地互动,这进一步推高了外界对于“体育元宇宙”的关注。伴随着AR/VR、云计算、AI等技术的日益成熟,叠加后疫情因素的影响,从源头的训练…

K8S:容器日志收集与管理

Kubernetes 里面对容器日志的处理方式&#xff0c;都叫作 cluster-level-logging&#xff0c;即&#xff1a;这个日志处理系统&#xff0c;与容器、Pod 以及 Node 的生命周期都是完全无关的。这种设计当然是为了保证&#xff0c;无论是容器挂了、Pod 被删除&#xff0c;甚至节点…

Linux_CentOS_7.9部署Docker以及镜像加速配置等实操验证全过程手册

前言&#xff1a;实操之前大家应该熟悉一个新的名词DevOps 俗称开发即运维、新一代开发工程师&#xff08;Development和Operations的组合词&#xff09;是一组过程、方法与系统的统称&#xff0c;用于促进开发&#xff08;应用程序/软件工程&#xff09;、技术运营和质量保障&…

【*1800树上贪心】CF1401 D

Problem - D - Codeforces 题意&#xff1a; 思路&#xff1a; 首先&#xff0c;1尽可能少&#xff0c;那就是让pi尽可能不合并地摊到所有边上&#xff0c;然后计算贡献 按照CF惯用套路&#xff0c;这样的n^2贡献肯定是更换枚举对象&#xff0c;我们去枚举边&#xff0c;按边…

Docker consul 的容器服务更新与发现

目录 一、Consul 简介 1.什么是服务注册与发现 2. 什么是consul 3.consul 架构 二、部署 consul 服务器&#xff08;192.168.88.10&#xff09; 1.建立 Consul 服务 2.查看集群信息 3.通过 http api 获取集群信息 三、registrator服务器&#xff08;192.168.88.60&…

Gnomon水下环境 下

不会全下去 鱼群 方向反了&#xff0c;位置不对 不动了 速度快&#xff0c;一个条 数量太多 太卡 使用的弧线没问题 &#xff0c;这块我有点晕 水泡制作 运动严重 减少晃动 turbulenceField1.phaseZ time*20; 总结 使用晶格调节大概样子,变成柔体 particleShape1.daxiaorand(…

shell实现数据库分库分表备份

#!/bin/bash2 3 backup/backup/db #存放数据库的位置4 nodatabasesinformation_schema|mycat|performance_schema|sys|mysql #要过滤的数据库5 6 mysql -uroot -predhat -e "show databases" -N | egrep -v "${nodatabases}" > dbname #将数据库存放在…

ansible自动化运维(二)剧本、角色编写实战

&#x1f618;作者简介&#xff1a;一名运维工作人员。 &#x1f44a;宣言&#xff1a;人生就是B&#xff08;birth&#xff09;和D&#xff08;death&#xff09;之间的C&#xff08;choise&#xff09;&#xff0c;做好每一个选择。 &#x1f64f;创作不易&#xff0c;动动小…