数据结构 - Discovery Log Page 结构解析 (第245页)
深入分析 NVM Express® Base Specification, revision 2.0b - Discovery Log Page 与 Reservation Notification Log Page
Discovery Log Page 和 Reservation Notification Log Page 是 NVM Express 规范中的重要日志页面,它们用于提供子系统发现信息和预留通知信息,帮助主机管理 NVM 子系统和命名空间。接下来,我们将对这两种日志页面进行详细分析。
Discovery Log Page 结构解析
Discovery Log Page Entry
Discovery Log Page Entry 记录了 NVM 子系统的发现信息,通常包括控制器 ID、传输地址、服务标识符等。每个条目提供了有关 NVM 子系统的详细信息,并帮助主机与这些子系统建立连接。
字段解析:
- Controller ID (CNTLID):
- 功能:指定控制器的标识符。
-
值说明:
- 如果 NVM 子系统采用动态控制器模型,则此字段设置为
FFFFh。 - 如果采用静态控制器模型,则此字段可以设置为特定的控制器 ID(
0h到FFEFh之间有效)。 - 如果采用静态控制器模型,且值为
FFFEh,主机应记住此返回的控制器 ID 以便未来重新建立关联。
- 如果 NVM 子系统采用动态控制器模型,则此字段设置为
-
Admin Max SQ Size (ASQSZ):
- 功能:指定所有控制器支持的最大 Admin 提交队列大小。
-
值说明:该值的最小值为
32。 -
Transport Service Identifier (TRSVCID):
-
功能:指定 NVMe 传输服务标识符,以 ASCII 字符串形式表示。
-
NVM Subsystem Qualified Name (SUBNQN):
- 功能:NVM 子系统的合格名称(NQN),唯一标识该子系统。
-
值说明:
- 对于 Discovery 服务,返回的值为
nqn.2014-08.org.nvmexpress.discovery。
- 对于 Discovery 服务,返回的值为
-
Transport Address (TRADDR):
-
功能:指定 NVM 子系统的地址,可用于
Connect命令。 -
Transport Specific Address Subtype (TSAS):
- 功能:提供有关地址的 NVMe 传输特定信息。
Discovery Log Page 格式
-
Generation Counter (GENCTR):指示发现信息的版本号,每次 Discovery Log Page 内容发生变化时,此计数器会递增。如果此字段的值为
0xFFFFFFFF_FFFFFFFF,则递增时字段清零。 -
Number of Records (NUMREC):指示日志页面中记录的数量。
-
Record Format (RECFMT):指定 Discovery Log Page 的格式,每次格式更新时,该值递增。
-
Discovery Log Page Entry (DLE0, DLE1, ...):包含 Discovery Log Page 条目的实际数据,记录 NVM 子系统的信息。
Reservation Notification Log Page 结构解析
Reservation Notification Log Page 用于报告关于命名空间预留状态的通知。如果某个命名空间上发生未屏蔽的预留通知,则会创建一个新的日志页面并加入队列。每次主机请求此日志页面时,系统返回队列中最旧的日志页面,并从队列中移除。
字段解析:
- Reservation Notification Log Page:
- 每当有预留通知发生时,控制器会将通知记录到日志页面中,按时间顺序存储。
- 返回:使用
Get Log Page命令时,系统返回数据缓冲区,包含队列中最旧的日志页面数据(即具有最低 Log Page Count 字段值的页面)。
总结
-
Discovery Log Page:提供了关于 NVM 子系统、控制器、传输地址等的详细信息。主机可以通过该日志页面识别并连接到正确的 NVM 子系统,并进行进一步的操作,如建立连接。
-
Reservation Notification Log Page:当命名空间发生预留状态变化时,系统会记录预留通知,并将其存储在队列中。主机可以读取这些日志页面,以便了解命名空间的当前预留状态。
这些日志页面是 NVM 子系统管理和监控的重要组成部分,帮助确保系统的稳定性和高效性。