管理命令集 - ✅ 一、Error Information Log Entry 结构(LID = 01h) (第190页)
NVME2.0协议解读 1 min read

管理命令集 - ✅ 一、Error Information Log Entry 结构(LID = 01h) (第190页)

Blog Author

我们继续深入分析 NVM Express® Base Specification Revision 2.0b 第 179 页内容,特别是关于 Error Information Log Entry(LID = 01h)SMART / Health Information Log Entry(LID = 02h) 的详细字段结构。以下是每个字段的具体讲解:


✅ 一、Error Information Log Entry 结构(LID = 01h)

该日志页用于描述命令错误信息非特定命令的错误,每个日志条目包含多个字段,以下是具体字段及其含义:

📌 字段 13:12

Bits 字段 描述
15:1 Status Field 指示完成命令的状态字段。如果错误与某个特定命令无关,则报告最适用的状态值。
0 Phase Tag 可选,指示与该命令关联的阶段标记(如果适用)。

📌 字段 11:10 - Parameter Error Location

Bits 字段 描述
15:14 Parameter Error Location 指示与错误相关的命令参数的字节和位的位置。如果参数跨越多个字节或位,则位置指示参数的第一个字节和位。
Bits 10:08 Bit in command that contained the error 错误所在命令的位(有效值:0 ~ 7)。
Bits 07:00 Byte in command that contained the error 错误所在命令的字节(有效值:0 ~ 63)。如果错误与特定命令无关,则设置为 FFFFh

📌 字段 23:16 - LBA

Bits 字段 描述
23:16 LBA 如果适用,指示与错误条件相关的 I/O 命令集特定数据。具体定义参见相关 I/O 命令集规范。

🔸 注意:LBA 字段应用于所有用户数据。

📌 字段 27:24 - Namespace

Bits 字段 描述
27:24 Namespace 指示与错误相关的命名空间的 NSID。如果适用,指定发生错误的命名空间 ID。

📌 字段 28 - Vendor Specific Information Available

Bits 字段 描述
28 Vendor Specific Information Available 如果有附加的厂商特定错误信息,此字段提供关联的日志页标识符。值为 0h 表示无附加信息,值在 80h ~ FFh 范围内表示有额外信息可用。

📌 字段 29 - Transport Type (TRTYPE)

Bits 字段 描述
29 Transport Type (TRTYPE) 指示与错误相关的传输类型。错误与传输无关时,此字段应为 0h。如果错误与传输类型相关,此字段会指示传输类型,符合 TRTYPE 中的定义(见图 264)。

📌 字段 39:32 - Command Specific Information

Bits 字段 描述
39:32 Command Specific Information 包含命令特定的信息。如果使用,该信息将由命令定义并返回。

📌 字段 41:40 - Transport Type Specific Information

Bits 字段 描述
41:40 Transport Type Specific Information 提供与传输类型特定的额外错误信息。

例如:如果传输类型是 TRTYPE = 3h,则该字段包含从传输头开始到出错字段的字节偏移量。如果有多个错误,返回的为最小的偏移量。

📌 字段 63:42 - Reserved

Bits 字段 描述
63:42 Reserved 保留位,未使用。

✅ 二、SMART / Health Information Log Entry(LID = 02h)

📌 功能与用途:

该日志页提供 SMART 和一般健康信息。数据跨越控制器的生命周期,并在断电后仍保持有效。通过 LID = 02h 请求控制器的日志页时,NSID 需为 0hFFFFFFFFh(全盘请求)。控制器也可能支持按命名空间单独请求该日志页,具体取决于 Identify Controller 数据结构中的 LPA 字段

📌 历史兼容性:

  • 为了兼容 NVM Express 1.4 版本及以前的实现,主机在请求控制器日志页时应使用 NSID = FFFFFFFFh

✅ 三、总结与学习建议

学习模块 建议
错误日志字段解析 通过 Error CountCommand IDSubmission Queue ID 等字段精确追踪和定位错误原因
命名空间错误定位 错误日志中的 Namespace 字段帮助快速定位错误来源的命名空间
Transport Type 错误分析 如果错误与传输相关,利用 TRTYPE 字段进行针对性分析
SMART 健康信息查询 配合 NSID = FFFFFFFFh 使用 LID = 02h 获取全盘健康信息
厂商特定错误信息 Vendor Specific Information Available 字段为厂商提供额外定制错误信息的可能,结合实际使用场景进行解码

如果你需要:

  • 一张详细的“Error Log Entry 字段说明表”
  • SMART / Health 信息查询流程图(如何通过 LID = 02h 获取健康数据)

我可以为你整理,帮助更高效地管理和解析错误日志数据。需要哪一部分?