高级特性 - 📌 7.3 Reservation Register 命令(续)+ 完整结构图解 (第345页)
NVME2.0协议解读 1 min read

高级特性 - 📌 7.3 Reservation Register 命令(续)+ 完整结构图解 (第345页)

Blog Author

我们继续深入分析 NVMe Base Specification 2.0b 的第 7.3 和 7.4 节,聚焦于 Reservation Register 和 Reservation Release 命令的完整结构与执行语义。


📌 7.3 Reservation Register 命令(续)+ 完整结构图解

我们接着上面分析的内容,来看剩余的字段说明和图 397 数据结构。


📑 图 396:Command Dword 10 中 RREGA 字段说明

位段 字段名 说明
02:00 RREGA (Reservation Register Action) 表示注册操作的具体行为:
动作说明
000b 注册 Reservation Key
001b 注销 Reservation Key
010b 替换 Reservation Key
011b ~ 111b 保留(非法)

🧾 图 397:Reservation Register Data Structure

字节范围 字段名 说明
07:00 CRKEY (Current Reservation Key) 当前注册者 Key,仅当动作为 UnregisterReplace 时有效(IEKEY=1 时忽略)
15:08 NRKEY (New Reservation Key) 新的 Reservation Key,仅当动作为 RegisterReplace 时有效

✅ Reservation Register 命令总结

操作类型 CRKEY 要求 NRKEY 要求 CPTPL 可选设置
注册 ×(保留) ✔(必填) 可指定
注销 ✔(必填) ×(保留) 可指定
替换 ✔(必填) ✔(必填) 可指定

若设置了 IEKEY=1,则 CRKEY 检查跳过(用于强制写入、测试或冲突处理)


🧨 7.4 Reservation Release 命令

这个命令用来释放当前主机持有的 Reservation(释放命名空间锁),或者完全清除命名空间的 Reservation 状态。


🔗 数据指针(图 398)

位段 字段名 说明
127:00 Data Pointer (DPTR) 指向 Reservation Release Data Structure 的物理地址

🧾 图 399:Command Dword 10 字段

位段 字段名 说明
31:16 Reserved 保留
15:08 RTYPE (Reservation Type) 仅在 Release 模式下有效,需与当前 reservation 类型匹配
07:04 Reserved 保留
03 IEKEY (Ignore Existing Key) 如果为 1,控制器将报错;如果为 0,则要求 CRKEY 校验通过
02:00 Reservation Release Action (RRACQA) 表示动作类型

✳️ Reservation Release Action (RRACQA) 说明

动作类型 描述
000b Release 当前注册者释放 Reservation 权利,但仍保留注册信息
001b Clear 清除命名空间中所有注册与 Reservation 状态(强制释放)
010b ~ 111b 保留 不支持的操作码

📄 图 400(隐含结构):Reservation Release Data Structure

字节范围 字段名 说明
07:00 CRKEY(当前 Reservation Key) 当前注册者的密钥,用于权限验证
> 控制器会比对此值与注册状态是否一致,若不一致,命令失败。

🧪 举例说明:Release 与 Clear 的不同

示例 1:普通释放 Reservation(Release)

当前主机持有 Reservation:
- 提交 Reservation Release 命令
- 设置 RRACQA = 000b
- CRKEY = 正确的密钥
- RTYPE = 当前 Reservation 类型

→ 主机会释放 Reservation 权限,但仍是注册者。


示例 2:强制清除 Reservation 状态(Clear)

主机发送:
- RRACQA = 001b(Clear)
- CRKEY = 当前密钥
- IEKEY = 0(需校验)

→ 控制器清空整个命名空间的 Reservation 注册与锁定信息,恢复“无保留”状态。


✅ Reservation Release 小结

操作类型 描述 CRKEY 校验 RTYPE 要求
Release 主动释放锁 是(需匹配)
Clear 清除所有注册 否(忽略)

你想继续分析 7.5 Reservation Report(查询当前注册状态) 命令吗?我可以继续帮你深入讲解它的结构与主机如何解析 Report 返回结果的格式。或者我们也可以进入第 8 章,开始分析命名空间管理或 Fabric 相关命令。你想怎么继续都可以 😄