数据结构与日志格式 - 第212页
NVME2.0协议解读 1 min read

数据结构与日志格式 - 第212页

Blog Author

中文深入分析协议:NVM Express® Base Specification, revision 2.0b 第5.16.1.14节持久事件日志操作的命令字段

1. Action字段:控制器在处理Get Log Page命令时的操作

Command Dword 10Log Specific Field 中,Action 字段指示控制器在处理 Get Log Page 命令时所采取的操作。具体的操作通过不同的值来确定,以下是每个值的含义:

📌 Action 字段的值和对应操作

  • 00b (Read Log Data):返回持久事件日志数据
  • 操作描述:控制器将返回持久事件日志页数据,起始地址由 LPOULPOL 字段指定。如果控制器没有持久事件日志报告上下文,命令将被中止,并返回 Command Sequence Error 状态码。

  • 01b (Establish Context and Read Log Data):建立报告上下文并返回日志数据

  • 操作描述
    1. 控制器首先确定持久事件日志页数据的长度。
    2. 确定需要报告的事件集合。
    3. 建立一个持久事件日志报告上下文,用于存储描述持久事件日志数据的信息,并跟踪持久事件日志页数据的访问。
  • 特别注意:如果已经存在持久事件日志报告上下文,控制器将中止命令,并返回 Command Sequence Error 状态码。

  • 10b (Release Context):释放持久事件日志报告上下文

  • 操作描述:控制器释放持久事件日志报告上下文(如果存在)。如果控制器没有持久事件日志报告上下文,执行此操作不算错误。

  • 11b (Establish Context and Read 512 Bytes of Header):建立报告上下文并返回日志页头部数据

  • 操作描述
    1. 控制器首先确定持久事件日志页数据的长度。
    2. 确定需要报告的事件集合。
    3. 如果报告上下文尚未存在,则创建持久事件日志报告上下文,用于存储描述持久事件日志数据的信息,并跟踪日志页数据访问。
  • 如果报告上下文不存在,则建立报告上下文后,返回 512 字节的持久事件日志页头部数据,起始地址为偏移量 0hReporting Context Exists 字段设置为 0,并返回状态码 Successful Completion
  • 如果报告上下文已经存在,则返回 512 字节的持久事件日志页头部数据,起始地址为偏移量 0hReporting Context Exists 字段设置为 1,并返回状态码 Successful Completion

📌 操作总结

  • Read Log Data:直接读取日志数据,必须存在报告上下文。
  • Establish Context and Read Log Data:在读取日志数据之前,首先建立报告上下文。
  • Release Context:释放已有的报告上下文,清理日志数据相关信息。
  • Establish Context and Read 512 Bytes of Header:读取日志数据的头部,并在需要时建立报告上下文。

总结:Action字段在 Get Log Page 命令中决定了控制器对持久事件日志的处理方式。操作的具体类型涉及是否需要建立或释放报告上下文,以及如何读取和返回日志数据。