UNH-IOL Reservation 一致性测试用例【3】- 取消注册

12 篇文章 0 订阅

Reservation 系列导航

UNH-IOL Reservation 一致性测试用例【1】- Reservation Report 命令验证
UNH-IOL Reservation 一致性测试用例【2】- Reservation注册
UNH-IOL Reservation 一致性测试用例【3】- 取消注册
UNH-IOL Reservation 一致性测试用例【4】- Reservation Acquire 验证
UNH-IOL Reservation 一致性测试用例【5】- Reservation Release
UNH-IOL Reservation 一致性测试用例【6】- 抢占 Reservation
UNH-IOL Reservation 一致性测试用例【7】- 清除Reservation
UNH-IOL Reservation 一致性测试用例【8】- 在不同 Reservation Types 下的命令行为
UNH-IOL Reservation 一致性测试用例【9】- Reservation Notification Log Page(LID 0x80)

Test 7.3 – Unregistering (M, OF-FYI)

作为 namespace registrant 的 Host 可以通过在 namespace 上执行 Reservation Register 命令, Reservation Register Action (RREGA) 字段设置为 0001b(即 Unregister Reservation Key),并在 CRKEY 字段中提供其当前 reservation key,从而取消在该 namespace 的注册。如果 CRKEY 字段的内容与 Host 当前关联的密钥不匹配,或者 Host 不是 registrant,则该命令将以 Reservation Conflic 状态终止。 取消 reservation 注册,Host 可通过将 Reservation Register 命令中的 IEKEY 位设为 “1”,而无需考虑其当前的 reservation key。

成功完成取消注册操作后, Host 将不再是该 namespace 的 registrant。

因抢占或注册清除而导致的取消注册将在后续测试中进行验证。

Case 1: Unregistering with Reservation Register Command (M, OF-FYI)

测试步骤
  1. 检查 Identify controller data structure(CNS 01) ONCS 字段确定 controller 是否支持 reservation
  2. 针对 NVMe Subsystem 里的每个 NVMe Controller:
    1. NVMe Host 向 Controller 发出 Set Features Host Identifier, 以便为该 Controller 注册一个 Host Identifier
    2. 对于 atttach 到该 Controller 的每个 shared namespace:
      1. Host 发 Reservation Register 命令,Register Action (RREGA) 字段设为 000b (即. Register Reservation Key),在 New Reservation Key (NRKEY) 字段中向 namesapce 的 NVMe Controller 提供 reservation key,以使 host 成为该 namespace 的 registrant。
      2. Host 发 Reservation Register 命令,Register Action (RREGA) 字段设为 001b(即Unregister Reservation Key),在 CRKEY 字段中向 namesapce 的 NVMe Controller 提供当前的 reservation key,使 host 取消注册该 namespace 的 registrant。
      3. Host 向 Controller 发送 Reservation Report 命令。
  3. 对所有 Reservation Controllers 执行 Reservation Release 命令,将 RRELA 字段设为 1(Clear)
预期结果
  1. 在每个命令完成后,控制器向相关的 Completion Queue 发布一个 completion queue entry,表明该命令的状态
  2. 在 Reservation Report 完成后,检查 Reservation Status data structure, host 已经取消成功注册该 namespace
注意事项

在支持NVMe 2.0 或以上的版本的 driver 中,当要设置 Host Identifier 时,如果它在测试开始时是非零值,set feature 将被 abort,Status Code 为 Command Sequence Error

Case 2: Unregistering due to Preemption (FYI, OF-FYI) Dual Port Devices Only

如果发生抢占,且 namespace 上没有 reservation,则执行带 Preempt 操作的 Reservation Acquire 命令会导致 reservation key 与 PRKEY 字段值相匹配的 registrants 被取消注册。

有关 reservation 抢占的更多信息,参阅 Preempting a Reservation 测试。
该测试要求 NVM subsystem 中至少有两个具有 shared namespace 的 Controller。

测试步骤
  1. 检查 Identify controller data structure(CNS 01) ONCS 字段确定 controller 是否支持 reservation
  2. NVMe Host 1 向 Controller 1 发出 Set Features Host Identifier, 以便为该 Controller 注册一个 Host Identifier
  3. NVMe Host 2 向 Controller 2 发出 Set Features Host Identifier, 为该 Controller 注册一个不同于 Host 1 的 Host Identifier
  4. Host 1 发 Reservation Register 命令,Register Action (RREGA) 字段设为 000b (即. Register Reservation Key),在 New Reservation Key (NRKEY) 字段中向 namesapce 的 NVMe Controller 1 提供 reservation key,以使 host 成为该 shared namespace 的 registrant。
  5. Host 2 发 Reservation Register 命令,Register Action (RREGA) 字段设为 000b (即. Register Reservation Key),在 New Reservation Key (NRKEY) 字段中向 namesapce 的 NVMe Controller 2 提供 reservation key,以使 host 成为该 shared namespace 的 registrant。
  6. Host 2 发送 Reservation Acquire 命令,将 RACQA 字段设为 001b(Preempt),并在 CRKEY 字段中提供与 Host 2 相关联的当前 reservation key,将 Preempt Reservation Key (PRKEY) 字段设置为与 Host 1 相关联的当前 reservation key,以抢占 Host 1 的 reservation。
  7. Host 2 向 Controller 2 发送 Reservation Report 命令。
  8. 对所有 Reservation Controllers 执行 Reservation Release 命令,将 RRELA 字段设为 1(Clear)
预期结果
  1. 在每个命令完成后,控制器向相关的 Completion Queue 发布一个 completion queue entry,表明该命令的状态
  2. 在 Reservation Report 完成后,检查 Reservation Status data structure, host 1 已经取消成功注册该 namespace, host 2 没有取消注册该 namespace
注意事项

目前尚未确定进行此项检测的可靠方法。因此,这项测试不应纳入任何行业批准的一致性认定中。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值