NVME_NVM_COMMANDS 枚举 (nvme.h)

包含指示 NVM 命令集中的命令的值。

语法

typedef enum {
  NVME_NVM_COMMAND_FLUSH,
  NVME_NVM_COMMAND_WRITE,
  NVME_NVM_COMMAND_READ,
  NVME_NVM_COMMAND_WRITE_UNCORRECTABLE,
  NVME_NVM_COMMAND_COMPARE,
  NVME_NVM_COMMAND_WRITE_ZEROES,
  NVME_NVM_COMMAND_DATASET_MANAGEMENT,
  NVME_NVM_COMMAND_VERIFY,
  NVME_NVM_COMMAND_RESERVATION_REGISTER,
  NVME_NVM_COMMAND_RESERVATION_REPORT,
  NVME_NVM_COMMAND_RESERVATION_ACQUIRE,
  NVME_NVM_COMMAND_RESERVATION_RELEASE,
  NVME_NVM_COMMAND_COPY,
  NVME_NVM_COMMAND_ZONE_MANAGEMENT_SEND,
  NVME_NVM_COMMAND_ZONE_MANAGEMENT_RECEIVE,
  NVME_NVM_COMMAND_ZONE_APPEND
} NVME_NVM_COMMANDS;

常量

 
NVME_NVM_COMMAND_FLUSH
将与指定命名空间关联的数据和元数据提交到非易失性媒体 () 的 Flush 命令。 刷新适用于在提交 Flush 命令之前完成的所有命令。 控制器还可以从任何命名空间刷新其他数据和/或元数据。
NVME_NVM_COMMAND_WRITE
写入命令,用于将数据和元数据(如果适用)写入指定逻辑块的 NVM 控制器。 主机还可以指定要包含在操作过程中的保护信息。

该命令使用 Command Dword 10、Command Dword 11、Command Dword 12、Command Dword 13、Command Dword 14 和 Command Dword 15 字段。 如果命令使用 PRP 进行数据传输,则使用“元数据指针”、“PRP 条目 1”和“PRP 条目 2”字段。 如果命令使用 SGL 进行数据传输,则使用“元数据 SGL 段指针”和“SGL 条目 1”字段。
NVME_NVM_COMMAND_READ
读取命令,用于从指定逻辑块的 NVM 控制器读取数据和元数据(如果适用)。 命令可以指定要在读取操作过程中检查的保护信息。

该命令使用 Command Dword 10、Command Dword 11、Command Dword 12、Command Dword 13、Command Dword 14 和 Command Dword 15 字段。 如果命令使用 PRP 进行数据传输,则使用“元数据指针”、“PRP 条目 1”和“PRP 条目 2”字段。 如果命令使用 SGL 进行数据传输,则使用“元数据 SGL 段指针”和“SGL 条目 1”字段。
NVME_NVM_COMMAND_WRITE_UNCORRECTABLE
用于将逻辑块范围标记为无效的 Write Uncorrectable 命令。 在此操作后读取指定的逻辑块 () 时,将返回失败并显示 “未恢复读取错误”状态。 若要清除无效的逻辑块状态,请对这些逻辑块执行写入操作。

使用的字段为 Command Dword 10、Command Dword 11 和 Command Dword 12 字段。 所有其他特定于命令的字段都保留。
NVME_NVM_COMMAND_COMPARE
Compare 命令,它从介质中读取命令指定的逻辑块,并将读取的数据与作为命令的一部分传输的比较数据缓冲区进行比较。 如果从控制器和比较数据缓冲区读取的数据是等效的,且没有错误比较,则命令将成功完成。 如果存在任何错误比较,则命令完成并显示“比较失败”错误。 如果提供了元数据,则还会对元数据执行比较。

该命令使用 Command Dword 10、Command Dword 11、Command Dword 12、Command Dword 14 和 Command Dword 15 字段。 如果命令使用 PRP 进行数据传输,则使用“元数据指针”、“PRP 条目 1”和“PRP 条目 2”字段。 如果命令使用 SGL 进行数据传输,则使用“元数据 SGL 段指针”和“SGL 条目 1”字段。 所有其他特定于命令的字段都保留。
NVME_NVM_COMMAND_WRITE_ZEROES
写入零命令,用于将逻辑块的范围设置为零。 成功完成此命令后,在此范围内逻辑块的后续读取返回的值应为零,直到此 LBA 范围发生写入。 此命令的元数据应全部为零,并且根据 CDW12 更新保护信息。PRINFO。

使用的字段包括 Command Dword 10、Command Dword 11、Command Dword 12、Command Dword 14 和 Command Dword 15 字段。
NVME_NVM_COMMAND_DATASET_MANAGEMENT
主机用来指示逻辑块范围的属性的数据集管理命令。

这包括读取或写入数据的频率、访问大小以及可用于优化性能和可靠性的其他信息等属性。 此命令为公告;合规的控制器可以根据提供的信息选择不执行任何操作。

该命令使用 Command Dword 10 和 Command Dword 11 字段。 如果命令使用 PRP 进行数据传输,则使用 PRP 条目 1 和 PRP 条目 2 字段。 如果命令使用 SGL 进行数据传输,则使用 SGL 条目 1 字段。 所有其他特定于命令的字段都保留。
NVME_NVM_COMMAND_RESERVATION_REGISTER
用于注册、注销或替换预留密钥的预留注册命令。

该命令使用命令 Dword 10 和内存中的预留寄存器数据结构。 如果命令使用 PRP 进行数据传输,则使用 PRP 条目 1 和 PRP 条目 2 字段。 如果命令使用 SGL 进行数据传输,则使用 SGL 条目 1 字段。 所有其他特定于命令的字段都保留。
NVME_NVM_COMMAND_RESERVATION_REPORT
预留报告命令,该命令将预留状态数据结构返回到内存中,用于描述命名空间的注册和预留状态。

预留状态数据结构的大小是 NVM 子系统中与作为命名空间的注册者的主机关联的控制器数的函数 (例如,每个此类控制器) 都有一个已注册的控制器数据结构。
NVME_NVM_COMMAND_RESERVATION_ACQUIRE
预留获取命令,用于获取命名空间上的预留、抢占命名空间上保留的预留,以及中止命名空间上保留的预留。

该命令在内存中使用 Command Dword 10 和 Reservation Acquire 数据结构。 如果命令使用 PRP 进行数据传输,则使用 PRP 条目 1 和 PRP 条目 2 字段。 如果命令使用 SGL 进行数据传输,则使用 SGL 条目 1 字段。 所有其他特定于命令的字段都保留。
NVME_NVM_COMMAND_RESERVATION_RELEASE
用于释放或清除命名空间上保留的预留的预留发布命令。

该命令使用命令 Dword 10 和内存中的预留发布数据结构。 如果命令使用 PRP 进行数据传输,则使用 PRP 条目 1 和 PRP 条目 2 字段。 如果命令使用 SGL 进行数据传输,则使用 SGL 条目 1 字段。 所有其他特定于命令的字段都保留。

注解

当控制器准备就绪时,主机将提交 NVM 命令,如 控制器状态 寄存器中的指示,并在创建相应的 I/O 提交队列 () 和 I/O 完成队列 () 之后提交。

要求

要求
最低受支持的客户端 Windows 10
标头 nvme.h