NVME_NVM_COMMANDS枚举 (nvme.h)

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

Syntax

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;

Constants

 
NVME_NVM_COMMAND_FLUSH
将与指定命名空间(s)关联的数据和元数据提交到非易失媒体的 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 控制器读取数据和元数据(如果适用)的 Read 命令。 该命令可以指定要作为读取作的一部分检查的保护信息。

该命令使用 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
用于将逻辑块范围设置为零的 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 字段。 如果命令使用 SCL 进行数据传输,则使用 SGL 条目 1 字段。 所有其他命令特定字段都保留。
NVME_NVM_COMMAND_RESERVATION_REGISTER
用于注册、注销或替换预留密钥的预留寄存器命令。

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

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

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

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

注解

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

要求

Requirement 价值
最低支持的客户端 Windows 10操作系统
Header nvme.h