数据结构 - Discovery Log Page 结构解析 (第245页)
NVME2.0协议解读 1 min read

数据结构 - Discovery Log Page 结构解析 (第245页)

Blog Author

深入分析 NVM Express® Base Specification, revision 2.0b - Discovery Log PageReservation Notification Log Page

Discovery Log PageReservation 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(0hFFEFh 之间有效)。
    • 如果采用静态控制器模型,且值为 FFFEh,主机应记住此返回的控制器 ID 以便未来重新建立关联。
  • 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
  • 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 子系统管理和监控的重要组成部分,帮助确保系统的稳定性和高效性。