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;
常數
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 字段。 如果命令使用 SCL 進行數據傳輸,則會使用 [元數據 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 字段。 如果命令使用 SCL 進行數據傳輸,則會使用 [元數據 SGL 區段指標] 和 [SGL 專案 1] 字段。 |
NVME_NVM_COMMAND_WRITE_UNCORRECTABLE 用來將邏輯區塊範圍標示為無效的 Write Uncorrectable 命令。 當指定的邏輯區塊 (在此作業之後讀取) 時,會傳回失敗並顯示 [未復原的讀取錯誤] 狀態。 若要清除無效的邏輯區塊狀態,會在這些邏輯區塊上執行寫入作業。 使用的欄位為 Command Dword 10、Command Dword 11 和 Command Dword 12 字段。 所有其他命令特定欄位都會保留。 |
NVME_NVM_COMMAND_COMPARE Compare 命令會從媒體讀取命令所指定的邏輯區塊,並將讀取的數據與作為命令一部分傳輸的比較數據緩衝區進行比較。 如果從控制器讀取的數據與比較數據緩衝區相等,且沒有錯誤的相容性,則命令會順利完成。 如果有任何錯誤compare,命令就會完成,並出現 「比較失敗」錯誤。 如果提供元數據,則也會針對元數據執行比較。 此命令使用 Command Dword 10、Command Dword 11、Command Dword 12、Command Dword 14 和 Command Dword 15 字段。 如果命令使用 PRP 進行資料傳輸,則會使用元數據指標、PRP 專案 1 和 PRP 專案 2 字段。 如果命令使用 SCL 進行數據傳輸,則會使用 [元數據 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 Entry 1 字段。 所有其他命令特定欄位都會保留。 |
NVME_NVM_COMMAND_RESERVATION_REGISTER 用來註冊、取消註冊或取代保留密鑰的 Reservation Register 命令。 此命令會在記憶體中使用 Command Dword 10 和 Reservation Register 數據結構。 如果命令使用 PRP 進行資料傳輸,則會使用 PRP 專案 1 和 PRP 專案 2 字段。 如果命令使用 SCL 進行數據傳輸,則會使用 SGL Entry 1 字段。 所有其他命令特定欄位都會保留。 |
NVME_NVM_COMMAND_RESERVATION_REPORT 保留報告命令,會將保留狀態數據結構傳回記憶體,以描述命名空間的註冊和保留狀態。 保留狀態數據結構的大小是 NVM 子系統中控制器數目的函式,與命名空間登錄者相關聯的主機 (例如,每個這類控制器) 都有已註冊的控制器數據結構。 |
NVME_NVM_COMMAND_RESERVATION_ACQUIRE 保留取得命令,用來取得命名空間上的保留、先佔命名空間上保留的保留,以及中止命名空間上保留的保留。 此命令會使用 Command Dword 10 和保留取得記憶體中的數據結構。 如果命令使用 PRP 進行資料傳輸,則會使用 PRP 專案 1 和 PRP 專案 2 字段。 如果命令使用 SCL 進行數據傳輸,則會使用 SGL Entry 1 字段。 所有其他命令特定欄位都會保留。 |
NVME_NVM_COMMAND_RESERVATION_RELEASE 保留發行命令,用來釋放或清除命名空間上保留的保留。 此命令會在記憶體中使用 Command Dword 10 和 Reservation Release 數據結構。 如果命令使用 PRP 進行資料傳輸,則會使用 PRP 專案 1 和 PRP 專案 2 字段。 如果命令使用 SCL 進行數據傳輸,則會使用 SGL Entry 1 字段。 所有其他命令特定欄位都會保留。 |
備註
當控制器就緒時,主機會提交 NVM 命令,如 控制器狀態 緩存器中所述,並在適當的 I/O 提交佇列 () 和 I/O 完成佇列 (建立) 之後。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 |
標頭 | nvme.h |