NVMe 自問自答題庫:Format 與 Sanitize

NVMe · Q1–328

NVM Express Base 2.4NVM Command Set 1.3NVMe over PCIe Transport 1.4

Q118–Q135

Format 與 Sanitize

Format 改變 namespace 格式;Sanitize 處理資料清除。兩者的範圍、完成點與 reset 行為不同,本冊以一次操作的前、中、後狀態逐步區分。

每個問題都接著完整解說,依內容帶讀欄位、比較機制或追蹤流程。先看本冊總覽,再沿問題閱讀;必要條件與正常路徑直接顯示。所有數字案例均為教學假設;Status 以 SCT/SC 表示,代碼後的 h 代表十六進位。

SCT
Status Code Type,完成狀態代碼類型

三條操作路徑不能互換

支援 subsystem Overwrite,不代表支援 namespace Overwrite。

操作主要選擇完成證據
Format NVMLBAF、metadata、PI、SESFormat CQE 與新格式
Subsystem SanitizeSANACT、範圍與選項啟動 CQE 後還看 LID81h
Namespace SanitizeNSID、Crypto Erase查目標 namespace 的狀態
PI
Protection Information,資料保護資訊
CQE
Completion Queue Entry,佇列中的完成項目
NSID
Namespace Identifier,邏輯儲存空間識別碼

舉例看懂:SANICAP.OWS=1 只能證明相應的 subsystem Overwrite 能力。若要求清除單一 namespace,Base2.4 的 Sanitize Namespace 只允許 Crypto Erase,不能將 SANACT=3 照搬過去。

來源:Base 2.4 §5.1.1, 5.2.11 · NVM Command Set 1.3 §4.1.2 · Base 2.4 §5.2.26–5.2.27 · Base 2.4 §5.2.13.1.38 · Base 2.4 §8.1.27.1–8.1.27.5

需要時回顧本篇名詞
Controller / namespace
controller 接收命令並管理存取;namespace 是命令可指定的一份邏輯儲存空間。NVM subsystem 則包含 controller 與非揮發儲存資源,同一 subsystem 可以有多個 controller。
SQ / CQ / SQE / CQE
Submission Queue(SQ)是提交佇列,Completion Queue(CQ)是完成佇列;SQE 與 CQE 分別是其中的一筆命令及完成項目。QID 識別 queue,CID 區分同一 SQ 中尚未完成的命令,NSID 則識別 namespace。
Register / Identify / Feature / Log
Register 提供可存取的控制或狀態資訊;Identify 查詢物件的能力與屬性;Feature 用來讀取或變更工作設定;Log Page 回報特定種類的狀態或紀錄。FID、LID、CNS、CSI 則分別用來選擇 Feature、Log Page、Identify 資料結構及命令集。
index / offset / zero-based
index 指出清單中的第幾筆,通常從 0 起算;offset 表示與起點相隔多遠,解讀時必須確認單位。若數量欄位採 zero-based 編碼,實際數量等於欄位值加 1;但不是所有欄位看到 0 都要加 1。Dword 是 4 bytes,1 byte 是 8 bits。
Scope / reset / retention
scope 表示操作影響哪些物件;retention 表示狀態是否保留。清除 CC.EN 所觸發的 Controller Reset,是 Controller Level Reset(CLR)的一種。同屬 CLR 的不同觸發方式,仍可能採用不同的 Register 保留規則。

本冊題目

  1. Q118 · 如何查詢 Format、Sanitize 與 Sanitize Namespace 的支援能力?
  2. Q119 · Format、Secure Erase、Subsystem Sanitize 與 Namespace Sanitize 有何差別?
  3. Q120 · Format 如何選 LBA Format、Metadata、PI 與 SES?
  4. Q121 · Format 的非法格式、參數與狀態如何回報?
  5. Q122 · Format 期間哪些 Admin 操作可以繼續?
  6. Q123 · Format 過程遇到 Reset 或斷電,如何判斷結果?
  7. Q124 · Format 成功後哪些 Identify 與 Namespace 狀態要更新?
  8. Q125 · Format 失敗時如何使用 CQE、Error Log 與 PEL?
  9. Q126 · SANICAP 如何表示 Block Erase、Overwrite 與 Crypto Erase?
  10. Q127 · NDAS、Overwrite Pattern、Pass Count 與反轉 Pattern 如何使用?
  11. Q128 · SPROG、SOS、SANS 與 GDE/NDE 要怎麼一起看?
  12. Q129 · Subsystem Sanitize 期間哪些 Command 允許執行?
  13. Q130 · Sanitize 遇到 Reset 或 Power Loss 會繼續嗎?
  14. Q131 · 成功、失敗與 Failure Mode 在 Log 中如何區分?
  15. Q132 · Exit Failure Mode 能做什麼,不能做什麼?
  16. Q133 · Sanitize 的 AER 與 PEL 應在何時產生?
  17. Q134 · Namespace Sanitize 如何指定目標並確認其他 Namespace 未被清除?
  18. Q135 · Namespace Sanitize 遇到不存在、Inactive 或不支援的目標如何回應?

Q118 如何查詢 Format、Sanitize 與 Sanitize Namespace 的支援能力?

需求:只透過查詢,確認 controller 是否支援 Sanitize Namespace。以下從命令清單找到操作碼,再走到支援紀錄的對應項目,最後讀取支援位元。

跟著解說理解

支援 Opcode、支援某種操作,以及當前允許執行,是三個要分開確認的問題。這能避免把「支援 Sanitize」誤讀成任何清除方法都可使用。

1. 要查哪個對象、哪份資料

Format 的範圍由 FNA、SES 與 NSID 決定;Sanitize 和 Sanitize Namespace 則是不同命令、不同清除目標。

NSID
Namespace Identifier,邏輯儲存空間識別碼

Format 查 OACS 與 FNA;Sanitize 查 SANICAP 的 CES、BES、OWS。要確認 Sanitize Namespace 命令本身,先由 Figure 28 找到 Admin Opcode 8Ch,再讀 LID05h 的對應 Admin entry,以 Figure 217 的 bit0(CSUPP)判讀。CSUPP 是命令支援宣告;SANICAP.CES、NVERS 則分別補充清除方法與 namespace 媒體驗證能力。

查詢範例:從 Sanitize Namespace 名稱找到 CSUPP

以下回傳值都是教學假設。使用同一個 PCIe I/O controller、CC.CSS=000b 及 UUID Index=0;查詢成功後才解讀 buffer。Figure 28 是規格的命令清單,不是這台 SSD 的實測能力表。

查詢步驟與原文位置要取出的資訊這一步能判斷什麼
1 · Figure 28,文件頁 46/PDF 72Sanitize Namespace → Admin Opcode=8Ch,支援要求為 O(Optional)。找到要查的命令與編碼。Optional 表示實作可選,還不能判定這台 controller 有支援。
2 · Identify Controller,Figure 338,文件頁 355、361~362/PDF 381、387~388CNS=01h;假設 LPA.CSES=1、SANICAP.CES=1、NVERS=0。CSES 是 LPA bit1。可以讀 Commands Supported and Effects;有 Crypto Erase 能力,但沒有 namespace Media Verification 能力。CES 本身不能取代 8Ch 的命令支援查詢。
3 · Get Log Page,Figures 204~208,文件頁 213~215/PDF 239~241Opcode=02h、LID=05h、NSID=0、NUMDL=03FFh、NUMDU=0;LPO=0、OT=0、RAE=0,讀取 4096 bytes。NUMD 是數量減 1:(03FFh+1)×4=4096 bytes。這是讀能力表,沒有提交 8Ch 清除命令。
4 · Figure 216,文件頁 227/PDF 253Admin entry 由 byte0 開始,每筆 4 bytes;8Ch=140,因此 4×140=560=230h,取 bytes560~563。這是 Admin 命令,不加 I/O 區的 1024-byte 起點。若只讀一段,buffer 內的位置還需扣掉該段的起始 byte offset。
5 · Figure 217,文件頁 228~229/PDF 254~255假設 bytes 依序是 03h、00h、01h、00h,依 little-endian 組成 00010003h;bit0=1。Command Supported(CSUPP)=1,所以 controller 宣告支援 8Ch。本例也有 LBCC=1、CSE=001b:命令可能改變資料,且有同 namespace 的提交協調建議;這些不是執行結果。
6 · §5.2.27、Figure 454,文件頁 452~453/PDF 478~479開始 namespace 清除的 SANACT=100b(Crypto Erase);010b、011b 為 Reserved。準備執行前,再查 Active NSID、保護狀態與並行限制。可回答「支援這個命令」,但不能回答「支援 namespace Overwrite」,也不能保證任意目標現在都能執行。範例 NVERS=0,也不提供進入 Media Verification 的能力。
CNS
Controller or Namespace Structure,選擇Identify回傳結構
LID
Log Page Identifier,紀錄頁識別碼

如果有效 entry 的 CSUPP=0,就是該命令不受支援,且這筆結構其餘欄位須為 0。若 LPA.CSES=0 或讀 Log 失敗,則這條路徑沒有取得有效命令支援證據,不能把它改寫成「已讀到 CSUPP=0」。

來源:Base 2.4 §3.1.3.4 (Figure 28 PCIe I/O-controller rows and O/M/P note only) · Base 2.4 §5.2.14.2.1 · Base 2.4 §5.2.14.1 · Base 2.4 §5.2.13–5.2.13.1.1 · Base 2.4 §5.2.13.1.6 · Base 2.4 §5.2.26–5.2.27

Format NVM、Sanitize、Sanitize Namespace 的 Admin Opcode 分別是 80h、84h、8Ch。這裡要送出的查詢命令是 Identify(06h)與 Get Log Page(02h);Get Log Page 的 LID=05h 才選到命令支援表。不能把 8Ch 填進 LID,也不能只查 Get Log Page 本身的 CSUPP,就當成所有 Log 或所有管理命令都受支援。

2. 查詢順序與回覆判讀

先確認查詢通道與 Log 支援,再讀正確 entry;若 CSUPP=1,才繼續查方法、參數與目標狀態。查詢過程只讀取資訊,不需要啟動清除。準備真的執行時,才進一步確認 Active NSID、寫入保護、Sanitize 狀態、並行上限與待啟用韌體限制。

Identify 與 Get Log Page 成功,表示已取得可判讀的能力資料。若 8Ch 的 CSUPP=1,可以回答「controller 宣告支援 Sanitize Namespace」;這不表示 NSID=7 現在一定能接受命令,更不表示資料已經清除。

3. 證據不足或不一致時怎麼判斷

查詢 LID05h 不受支援時,Get Log Page 一般以 Invalid Log Page(1/09h)失敗;這時沒有有效的 CSUPP 可讀,不能當成 CSUPP=0。真正提交不支援的 Opcode,與受支援命令使用非法 SANACT,是另外兩種條件,分別按 Invalid Command Opcode(0/01h)與 Invalid Field in Command(0/02h)判斷。

交叉比對時,要保持 controller、命令集與查詢時點一致。CSUPP=1 但操作失敗時,先排除非法參數及目前狀態;CSUPP=0 卻有同一命令的合法成功行為,才構成需要追查的支援宣告矛盾。SANICAP.OWS=1 也不會把 namespace Overwrite 變成合法操作。

先確認讀的是 LID05h 的 Admin 區、Opcode8Ch 那一筆,並且 Get Log Page 已成功。讀錯 84h、漏掉位移單位,或把失敗查詢留下的 buffer 當成有效資料,都會讓支援結論出錯。

來源:Base 2.4 §5.2.14.2.1 · Base 2.4 §5.2.13.1.6 · Base 2.4 §5.2.26–5.2.27 · Base 2.4 §5.1.1, 5.2.11 · NVM Command Set 1.3 §4.1.2 · Base 2.4 §5.2.13.1.14.2.7–5.2.13.1.14.2.8 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events) · Base 2.4 §3.1.3.4 (Figure 28 PCIe I/O-controller rows and O/M/P note only) · Base 2.4 §5.2.13–5.2.13.1.1 · Base 2.4 §5.2.14.1

回本冊題目

Q119 Format、Secure Erase、Subsystem Sanitize 與 Namespace Sanitize 有何差別?

跟著解說理解

Format 用於改變媒體格式,也可要求 Secure Erase;Sanitize 則以清除目標中的使用者資料為主,不是一般的格式切換。

1. 差別在哪裡

Format 依 FNA/SES/NSID 選範圍;Subsystem Sanitize 包含其規定的全部使用者資料位置;Namespace Sanitize 只清除指定 namespace 的資料範圍。

Format 的 SES=0 不要求 Secure Erase,1 為 User Data Erase,2 為 Cryptographic Erase。Sanitize 的 SANACT 另行選擇方法;Namespace Sanitize 只支援 Crypto Erase。

2. 如何選擇與確認

檢查 OACS、FNA、SANICAP、namespace 狀態及支援的格式。不能只看到「Crypto Erase」同名,就省略命令範圍差異。

先回答要改格式、清除哪個範圍、是否需要指定清除方法,再選命令。所有 namespace 各做一次 Sanitize,也不等於 subsystem 的全部使用者資料位置都已處理。

Format CQE 在格式化完成後回傳;Sanitize 啟動成功後仍以背景方式進行,要另查 LID81h。

3. 比較時要保留的條件

不合法格式使用 Invalid Format;不支援 SANACT 使用 Invalid Field。各命令的拒絕條件不能互相套用。

例如需要改成 4 KiB LBA,應選 Format;需要清除整個 subsystem,不能只指定一個 namespace 然後把 NDE 當 GDE。

LBA
Logical Block Address,邏輯區塊位址

來源:Base 2.4 §5.2.26–5.2.27 · Base 2.4 §8.1.27.1–8.1.27.5 · NVM Command Set 1.3 §4.1.7, 5.12 · Base 2.4 §5.1.1, 5.2.11 · NVM Command Set 1.3 §4.1.2 · Base 2.4 §5.2.13.1.14.2.7–5.2.13.1.14.2.8 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)

回本冊題目

Q120 Format 如何選 LBA Format、Metadata、PI 與 SES?

LBA
Logical Block Address,邏輯區塊位址
PI
Protection Information,資料保護資訊
跟著解說理解

格式選擇決定後續 I/O 的資料長度與 metadata 位置。選錯會讓 Read/Write 的 buffer 與保護資訊不符合 namespace 的格式。

1. 操作前先準備什麼

設定適用於 Format 所涵蓋的 namespaces,不是只在這一筆命令中暫時使用。

讀 Identify Namespace 的 LBAF/FLBAS、MC、DPC、DPS,以及需要時的 NVM 特定格式擴充;確認 Host Behavior Support.LBAFEE。

CDW10 的 LBAFL 與有效時的 LBAFU 組成格式索引;MSET 選 extended LBA 或獨立 metadata buffer;PI 選 0~3;本版 NVM PIL 必須為 0。SES 另決定是否 Secure Erase。

2. 先後順序與完成條件

選定一個已宣告的格式,確認 metadata 與 PI 能力,再組合欄位。假設 LBAF2 是 4096-byte data+16-byte metadata,MSET=1 時每個 extended LBA 傳輸長度是 4112 bytes。

成功後 FLBAS/DPS 應反映設定;logical block 大小改變時,NSZE/NCAP 可能改變,應重新讀取。

3. 未符合條件時如何處理

未支援格式回 Invalid Format;未啟用必要 LBAFEE 的格式回 Invalid Namespace or Format。共享 FDP RUH 還須符合共同格式限制。

FDP
Flexible Data Placement,彈性資料放置

用新格式重算 I/O data/metadata 長度,不要沿用 Format 前的 buffer 設定。

來源:NVM Command Set 1.3 §4.1.5.1–4.1.5.4 · Base 2.4 §5.2.30.1.15 · Base 2.4 §5.1.1, 5.2.11 · NVM Command Set 1.3 §4.1.2 · Base 2.4 §5.2.13.1.14.2.7–5.2.13.1.14.2.8 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)

回本冊題目

Q121 Format 的非法格式、參數與狀態如何回報?

跟著解說理解

拒絕原因可能是格式不存在、Host 未啟用格式、namespace 受保護,或與其他操作衝突。不同原因需要不同修正。

1. 先區分是哪一種失敗

先計算 Format 的完整範圍,再查其中每個 namespace;只要範圍內有寫入保護,就不能只看提交時指定的 namespace 是否可寫。

Invalid Format=1/0Ah;Invalid Namespace or Format=0/0Bh;Namespace is Write Protected=0/20h;Command Sequence Error=0/0Ch;Format In Progress=0/84h。

Format 影響的 namespace 尚有 I/O 時,controller 可中止 Format;若因此中止,應回 Command Sequence Error。這裡的「可」不能改寫成每次都必須拒絕。

2. 用哪些資料確認原因

用 LBAF、LBAFEE、FNA、Write Protection 狀態,以及現有 I/O/Admin 操作確認前提。

負向測試一次製造一項問題。例如測不支援 LBAF,先確保 NSID 合法、未受保護、沒有其他操作衝突。

3. 結果與後續驗證

正確拒絕不等於格式已改變;讀回設定以確認未將失敗命令錯當成成功操作。

測試需分清 shall、should、may,以及同時多錯誤時的 Status 選擇自由。

先看是否同時觸發保護與非法格式,導致精確 Status 斷言沒有唯一答案。

來源:Base 2.4 §4.2.3 · Base 2.4 §5.2.30.1.38, 8.1.18 · Base 2.4 §5.2.14.2.1 · Base 2.4 §5.1.1, 5.2.11 · NVM Command Set 1.3 §4.1.2 · Base 2.4 §5.2.13.1.14.2.7–5.2.13.1.14.2.8 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)

回本冊題目

Q122 Format 期間哪些 Admin 操作可以繼續?

跟著解說理解

Host 仍需要查詢狀態、維持通知與管理 queue,所以 Format 期間不應一概封鎖全部 Admin 命令。

1. 機制與適用範圍

限制取決於操作是否影響正在 Format 的 namespace,以及 Figure144 對命令或 Log 的附加條件。

常見允許項包含 Abort、AER、queue 建立/刪除、Identify、Get Features、Get Log Page 的指定 LID 及 Keep Alive。Set Features 中的 Namespace Write Protection Config 不允許。

2. 用操作與結果理解

先確認命令本身受支援,再查 Format 期間的允許清單;列在允許清單不會讓選配功能自動變成支援。

以 Figure144 逐項檢查。Error Information 的 LBA 回 0;Self-test 僅 Controller DST 建議允許;不能由「Get Log Page 允許」推論所有 LID 都允許。

允許的查詢回目前狀態,不表示 Format 已完成。Format 的 CQE 或完整結果證據仍要另外確認。

3. 容易誤判的地方

未列出的 Admin 若影響被 Format 的 namespace,可中止;因這項理由中止時,建議回 Format In Progress。反向的操作衝突則可能使 Format 回 Command Sequence Error。

分別驗證命令允許性、LID 限制與回傳欄位,不用一筆 Get Log 成功概括全部管理操作。

來源:Base 2.4 §5.1.1–5.1.2 (PCIe commands) · Base 2.4 §5.1.1, 5.2.11 · NVM Command Set 1.3 §4.1.2 · Base 2.4 §5.2.13.1.14.2.7–5.2.13.1.14.2.8 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)

回本冊題目

Q123 Format 過程遇到 Reset 或斷電,如何判斷結果?

跟著解說理解

失去 CQE 代表 Host 不知道結果,不等於操作必定沒做,也不等於已成功。恢復後應以現況與事件證據重新建立判斷。

1. 先界定觸發方式與影響對象

檢查原 Format 範圍內所有 namespaces,以及其他 controller 對共享 namespace 的存取狀態。

讀 Identify Namespace 的 FLBAS、DPS、NSZE/NCAP、支援時的 FPI,及 PEL Format Completion。

2. 哪些狀態改變,恢復後怎麼處理

Format Completion Event 的 FNVMS 說明格式化結果,INFO 保存曾回報的 Status;沒有 CQE 時 INFO=0 不能當成功。

先恢復 controller 與 Admin Queue,再保存事件、讀回新格式、確認可用性;若仍無法確定操作完成,就不要直接以舊格式恢復 I/O。

可以確認目前格式與完成狀態後,Host 才配置對應 buffer 與 PI。若需重新 Format,先依目前能力與範圍建立新命令。

3. 重設或斷電時,要確認什麼

觸發方式這項操作或狀態會如何變化
Controller Reset 後是否保留或繼續?Controller Reset 結束舊命令通道,不能沿用原 Format 的 outstanding 狀態或等待舊 CQE。恢復後重新讀格式、FPI 與可取得的 Format Completion Event,確認媒體實際狀態;Reset 本身既不證明格式化成功,也不保證回復舊格式。
NVM Subsystem Reset 後是否保留或繼續?NVM Subsystem Reset 後先恢復通道,再逐一查詢原 Format 範圍內的 namespaces。不能只查提交命令的 controller,就假設所有受影響 namespace 都已完成或恢復。
Power Cycle 後是否保留或繼續?Power Cycle 中斷時若沒有可信的 Format 成功完成,Host 應重新確認目前格式與可用性,必要時重新執行符合當前狀態的 Format。先前資料可能已被破壞,不能因命令沒有回成功就假設資料仍在。

4. 如何驗證保留或恢復結果

Reset 不保證原資料可復原,Power Cycle 也不是撤銷 Format 的方法;未收到成功不代表舊資料安全。

把 Reset 之前最後可信的事件與恢復後第一份快照連起來,標示中間不可觀察的期間。

先查是否有可信的 Format 成功 CQE;若沒有,避免直接用 INFO=0 補出成功結論。

來源:Base 2.4 §3.7.1–3.7.4 · NVM Command Set 1.3 §4.1.5.1–4.1.5.4 · Base 2.4 §5.1.1, 5.2.11 · NVM Command Set 1.3 §4.1.2 · Base 2.4 §5.2.13.1.14.2.7–5.2.13.1.14.2.8 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)

回本冊題目

Q124 Format 成功後哪些 Identify 與 Namespace 狀態要更新?

跟著解說理解

Format 改變後續 I/O 的解讀方式,因此 Host 必須更新快取的 namespace 資訊,避免用舊 LBA 大小或 PI 設定讀寫。

1. 操作前先準備什麼

更新的是受影響 namespace 的格式及相關容量;Format 不等同 Create/Delete,不能預設一定產生新 NSID。

查 Identify Namespace 與必要的 NVM 特定結構,確認 FLBAS、DPS、LBAF、NSZE、NCAP 與 FPI。

FLBAS 表示使用中的格式及 metadata 傳輸方式;DPS 表示 PI 設定;NSZE/NCAP 以新的 logical block 為單位。

2. 先後順序與完成條件

等待 Format 成功 CQE,重新 Identify,再依新格式重算 LBA 範圍與 buffer 大小;有共享存取者時同步更新它們的配置。

設定讀回應與命令要求一致;若 block 大小改變,NSZE/NCAP 可能不同,不能用「數字必須完全不變」驗證容量。

3. 未符合條件時如何處理

若成功 CQE 後仍回舊格式,先排除讀錯 NSID、讀到快取或命令範圍誤判,再確認不一致。

例如同一容量從 512-byte 改為 4096-byte LBA,應比較以 bytes 表示的容量及允許變化,而不是只比較 block 數。

來源:NVM Command Set 1.3 §4.1.5.1–4.1.5.4 · NVM Command Set 1.3 §4.1.2 · Base 2.4 §5.2.13.1.5 · Base 2.4 §5.1.1, 5.2.11 · Base 2.4 §5.2.13.1.14.2.7–5.2.13.1.14.2.8 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)

回本冊題目

Q125 Format 失敗時如何使用 CQE、Error Log 與 PEL?

跟著解說理解

先區分命令因參數被拒絕,與格式化已開始後失敗;後者可能已改變資料,不能當成完全沒有執行。

1. 先保留哪些證據

證據需對應同一筆 Format 及同一範圍;其他 namespace 的事件不能當成這筆命令的結果。

保存 CQE 的 SCT/SC/M/DNR,及 PEL 支援與事件有效性。

SCT
Status Code Type,完成狀態代碼類型
DNR
Do Not Retry,命令重試的狀態提示

Error Log 用 SQID/CID/ECNT 關聯;Format Start 保存參數,Completion 的 FNVMS/INFO 記錄結果與曾回報狀態。

SQID
Submission Queue Identifier,提交佇列識別碼
CID
Command Identifier,同一提交佇列內的命令識別碼

2. 依什麼順序排除原因

先看 Format 是否已進入執行階段,以及 PEL 是否存在相符的 Start/Completion。

先讀原 CQE,再依 M 取得補充資訊,最後以 PEL 與 Identify 現況補足過程。缺少某種記錄時先確認其要求,不硬湊三份一對一證據。

3. 把觀察結果接回規格條件

能說明失敗原因及目前是否可用,就是有效診斷。若結果仍不確定,保留不確定性而不是假設格式化回復。

Multiple errors 可能有不同合法 Status;INFO=0 也可能只是沒有 CQE,不可以忽略 FNVMS。

把命令參數、結果與目前格式比對,檢查是否有「回報成功但格式不符」或「失敗卻被 Host 視為成功」的矛盾。

4. 分開核對事件通知與 Log 紀錄

成功後重新讀 Identify Namespace 的格式與容量,並查看 Changed Namespace 清單。 完整條件見本冊說明

支援 PEL 與對應事件時,Format Start(07h)保存要求,Format Completion(08h)保存操作結果。 完整條件見本冊說明

來源:Base 2.4 §5.2.13.1.2 · Base 2.4 §4.2.3 · Base 2.4 §5.1.1, 5.2.11 · NVM Command Set 1.3 §4.1.2 · Base 2.4 §5.2.13.1.14.2.7–5.2.13.1.14.2.8 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)

回本冊題目

Q126 SANICAP 如何表示 Block Erase、Overwrite 與 Crypto Erase?

跟著解說理解

SANICAP 告訴 Host 哪些清除方法可用,以及 No-Deallocate、驗證等延伸能力。它不是「非零就所有方法皆可用」的布林值。

1. 先確認資料的來源與範圍

CES、BES、OWS 對應 subsystem 清除方法;namespace 清除另有能力宣告,且本版只定義 Crypto Erase。

讀 Identify Controller.SANICAP,並交叉查 Command Effects 中的 84h/8Ch 與 LID81h 支援。

2. 欄位、單位與判讀例子

CES、BES、OWS 分別為 Crypto Erase、Block Erase、Overwrite 支援位元;NODAS/NDI 相關能力決定 NDAS 的意義,VERS/NVERS 則分別控制兩種目標的 Media Verification。

把需求的方法對到它的能力位元,再選對 SANACT。假設只有 BES=1,就選 subsystem Block Erase,不能改用 Overwrite。

合法啟動回 Success,且對應 Sanitize Status 已更新;能力支援不保證每次背景清除都能成功。

3. 判讀時要保留的條件

支援命令但 SANACT 不受支援時,必須回 Invalid Field in Command。

若不同 controller 屬於同一 subsystem,支援的相同 Sanitize 命令類型應一致;再另外驗證各命令的目標能力。

來源:Base 2.4 §5.2.14.2.1 · Base 2.4 §5.2.26–5.2.27 · Base 2.4 §5.2.13.1.38 · Base 2.4 §8.1.27.1–8.1.27.5 · Base 2.4 §5.2.13.1.14.2.9–5.2.13.1.14.2.10 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)

回本冊題目

Q127 NDAS、Overwrite Pattern、Pass Count 與反轉 Pattern 如何使用?

跟著解說理解

Overwrite 的欄位決定覆寫內容與次數;NDAS 則控制成功後是否釋放配置。資料清除與 deallocation 是不同動作,必須分開理解。

1. 先確認資料的來源與範圍

這些 Overwrite 與 NDAS 欄位屬 subsystem Sanitize,不能照搬到 Sanitize Namespace 的 CDW10。

確認 OWS、No-Deallocate Inhibited 與 No-Deallocate Modifies Media After Sanitize,必要時讀 FID17h.NODRM。

2. 欄位、單位與判讀例子

SANACT=3 選 Overwrite;OVRPAT 為 32-bit pattern;OWPASS=0 表示 16 次,1~15 表示該次數;OIPBP=1 在各次之間反轉 pattern。

假設 OVRPAT=AAAAAAAAh、OWPASS=2、OIPBP=1,兩次分別使用 AAAAAAAAh 與 55555555h。再獨立決定是否請求 NDAS。

成功後讀 SOS、完成 passes 與 GDE;若資料被 deallocate,Read 結果應依 deallocated LBA 規則,不保證仍讀出最後 pattern。

3. 判讀時要保留的條件

NDAS=1 但被 NDI 禁止時,NODRM=0 拒絕為 Invalid Field;警告模式可執行並回報 Unexpected Deallocate。非 Overwrite 時覆寫欄位按規定忽略。

比較要求的 pattern/passes、Log 保存的 SCDW10 與實際完成狀態;不要把 OWPASS=0 解成沒有做任何覆寫。

來源:Base 2.4 §5.2.30.1.16 · NVM Command Set 1.3 §4.1.7, 5.12 · Base 2.4 §5.2.26–5.2.27 · Base 2.4 §5.2.13.1.38 · Base 2.4 §8.1.27.1–8.1.27.5 · Base 2.4 §5.2.13.1.14.2.9–5.2.13.1.14.2.10 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)

回本冊題目

Q128 SPROG、SOS、SANS 與 GDE/NDE 要怎麼一起看?

跟著解說理解

進度比例、操作結果、狀態機位置與資料是否仍保持已清除,是四個不同問題。分開看,才能避免把 FFFFh 或 GDE=1 當成全部流程已完成。

1. 先確認資料的來源與範圍

LID81h 依 NSID 選 subsystem 或指定 namespace;namespace 回覆中的 NDE 不能當成整個 subsystem 的 GDE。

確認 SANICAP 與 verification 能力,再讀同一目標的整份一致狀態快照。

2. 欄位、單位與判讀例子

SPROG/65536 是適用處理階段的完成比例;SOS 表示未開始、成功、進行中、失敗等;SANS 指狀態機位置;GDE/NDE 還會受後續使用者寫入影響。

先看 SOS 是否仍 Sanitizing,再看 SANS 在 Processing、Media Verification 或 Post-Verification Deallocation,最後才解讀 SPROG。

SPROG=8000h 在適用處理階段代表約 50%;FFFFh 在未處理或 Media Verification 時也可出現,不是獨立成功證據。

3. 判讀時要保留的條件

Get Log 查錯目標可有 Invalid Namespace or Format;subsystem 正在清除時讀 namespace 狀態另有 Sanitize In Progress 限制。

比較 SCDW10 與原要求,避免把先前一次清除的結果當成這次結果;再查看後續是否已有寫入清除 GDE/NDE。

來源:NVM Command Set 1.3 §4.1.7, 5.12 · Base 2.4 §5.2.26–5.2.27 · Base 2.4 §5.2.13.1.38 · Base 2.4 §8.1.27.1–8.1.27.5 · Base 2.4 §5.2.13.1.14.2.9–5.2.13.1.14.2.10 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)

回本冊題目

Q129 Subsystem Sanitize 期間哪些 Command 允許執行?

跟著解說理解

清除期間必須阻止使用者資料重新流入或被讀出,但仍保留查詢、通知與必要管理能力。允許清單因此有命令、選項與 Log 層級限制。

1. 機制與適用範圍

限制適用於 subsystem 的全部 controller;換另一個 controller 不能繞過同一清除狀態。

Identify、AER、Get Features、queue 管理及指定 Log 可用;Sanitize Status 可查。PEL 與 vendor-specific Log 在此清除期間禁止,Self-test 也禁止;Error Log 的 LBA 必須回 0。

2. 用操作與結果理解

查 Figure144、Sanitize 狀態機,以及 NVM Figure200/201 的命令集補充。

先判斷狀態,再按命令及 LID 套限制。一般 I/O 受阻;Flush 與 Media Verification Read 有特別規則,不能用「全部 I/O 一律禁止」蓋過例外。

允許的命令正常完成;不允許的命令被拒絕,而背景 Sanitize 繼續。清除進度查詢建議不要過度頻繁,以免干擾進度。

3. 容易誤判的地方

進行中通常回 Sanitize In Progress;進入 failure state 後須依命令類型與失敗規則處理,不能把進行中與失敗混為一個狀態。

驗證同一限制是否在所有相關 controller 生效,也檢查允許的 Get Log 沒有洩漏應清除的使用者資料欄位。

來源:Base 2.4 §5.1.1–5.1.2 (PCIe commands) · NVM Command Set 1.3 §4.1.7, 5.12 · Base 2.4 §5.2.26–5.2.27 · Base 2.4 §5.2.13.1.38 · Base 2.4 §8.1.27.1–8.1.27.5 · Base 2.4 §5.2.13.1.14.2.9–5.2.13.1.14.2.10 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)

回本冊題目

Q130 Sanitize 遇到 Reset 或 Power Loss 會繼續嗎?

跟著解說理解

Sanitize 的清除保證不能讓 Reset 或拔電變成逃脫途徑,因此背景操作會跨 Controller Level Reset 與 power cycle 繼續。

1. 先界定觸發方式與影響對象

持續的是所選清除目標的狀態機與操作,不是原本已消失的 Admin Queue 或 AER Request。

重新讀 LID81h,確認 SOS、SANS、SCDW10、MVCNCLD 與目標 NSID;先恢復管理通道才能查詢。

2. 哪些狀態改變,恢復後怎麼處理

MVCNCLD 表示 Media Verification 被取消。傳輸層或 Subsystem Reset 的特定條件會設定它,不能把它解讀成 Sanitize 取消。

重設前保存狀態;恢復後先讀同一目標的 Log,再判斷是否繼續處理、轉入 deallocation 或已完成,不直接重新開始另一筆操作。

合理結果是背景操作持續或已依狀態機完成;斷電期間沒有處理進度並不違規,但恢復後不能忘記操作。

3. 重設或斷電時,要確認什麼

觸發方式這項操作或狀態會如何變化
Controller Reset 後是否保留或繼續?Sanitize 背景操作不因 Controller Level Reset 而中止。Host 重新建立查詢通道後讀同一目標的 LID81h。另需分辨 Reset 來源:傳輸層 Reset 等條件可能取消 Media Verification,使 MVCNCLD 設為 1,而不是取消整個清除操作。
NVM Subsystem Reset 後是否保留或繼續?NVM Subsystem Reset 也不提供中止 Sanitize 的方法。操作的狀態與 Log 需要保留;如果原本要求 Media Verification,還要檢查 MVCNCLD 及後續 deallocation 階段。
Power Cycle 後是否保留或繼續?斷電期間無法進行媒體處理,但重新供電後 Sanitize 仍須依保存的狀態繼續,不可當成從未開始。恢復後查看 SOS/SANS 與進度,不能只見 SPROG=FFFFh 就宣告成功。

4. 如何驗證保留或恢復結果

仍在處理時重送啟動要求可能被 Sanitize In Progress 拒絕。不要將這個拒絕誤判成 Reset 後功能損壞。

檢查原參數、目標及狀態延續,再與重新建立的 AER/Log 查詢區分。

先確認查的是原目標,而不是在 namespace 清除後改查 subsystem Log。

來源:Base 2.4 §3.7.1–3.7.4 · Base 2.4 §5.2.26–5.2.27 · Base 2.4 §5.2.13.1.38 · Base 2.4 §8.1.27.1–8.1.27.5 · Base 2.4 §5.2.13.1.14.2.9–5.2.13.1.14.2.10 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)

回本冊題目

Q131 成功、失敗與 Failure Mode 在 Log 中如何區分?

跟著解說理解

操作結果與目前狀態不一定一樣。離開 Failure Mode 後,狀態可以回 Idle,但最近一次清除仍然是失敗。

1. 先保留哪些證據

以同一 target 的 SOS 與 SANS 判斷;namespace 失敗不能直接當成整個 subsystem 的最後清除結果。

讀 LID81h;支援相關 verification 資訊時另讀 FAILS 與 MVCNCLD,補足在哪一階段失敗。

SOS=001b 為 Sanitized,010b 為 Sanitizing,011b 為 Sanitize Failed,100b 為 Sanitized Unexpected Deallocate;SANS 再指出 Idle、Processing 或 Failure 等實際狀態。

2. 依什麼順序排除原因

先看 SANS,確認讀者所說的「失敗模式」真的是目前狀態,而不是歷史結果。

先查看結果,再判斷當前是否仍被失敗限制阻擋。若 SANS=Idle 但 SOS=Failed,確認是否曾執行合法 Exit Failure Mode。

3. 把觀察結果接回規格條件

成功不只看 SPROG;失敗也不是只看命令 CQE。背景失敗應由狀態與事件反映。

Restricted Failure 與 Unrestricted Failure 的允許復原動作不同。不能從兩者相同的 Failed 結果推論可使用相同恢復操作。

將 SOS、SANS、原 AUSE 及後續復原要求放在一起,檢查是否存在不合法的狀態轉移。

來源:Base 2.4 §5.2.26–5.2.27 · Base 2.4 §5.2.13.1.38 · Base 2.4 §8.1.27.1–8.1.27.5 · Base 2.4 §5.2.13.1.14.2.9–5.2.13.1.14.2.10 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)

回本冊題目

Q132 Exit Failure Mode 能做什麼,不能做什麼?

跟著解說理解

Exit Failure Mode 可以在允許的情況下解除失敗狀態造成的存取限制,但它不會把未清除的資料補清,也不會把失敗結果改成成功。

1. 機制與適用範圍

動作針對指定清除目標;subsystem 與 namespace 各有狀態機。

SANACT=001b 表示 Exit Failure Mode。它不是新一次 Block/Crypto/Overwrite 清除。

2. 用操作與結果理解

先讀 SANS 與原 SCDW10.AUSE。AUSE 決定操作進入 restricted 或 unrestricted 路徑。

Unrestricted Failure 可藉此回 Idle;Restricted Failure 必須以符合限制的新清除操作復原。Idle 收到此動作不視為錯誤。

合法退出後可回到允許正常存取的狀態,但 SOS 仍可報告最近操作失敗,GDE/NDE 也不能憑退出動作設成成功清除。

3. 容易誤判的地方

Restricted Failure 的 Exit Failure Mode 會依目標回相應 Sanitize Failed 類型;不能用反覆重送或 Reset 繞過限制。

驗證成功退出後的 SANS 與失敗歷史同時合理,而不是要求 Log 全部清零。

來源:Base 2.4 §5.2.26–5.2.27 · Base 2.4 §5.2.13.1.38 · Base 2.4 §8.1.27.1–8.1.27.5 · Base 2.4 §5.2.13.1.14.2.9–5.2.13.1.14.2.10 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)

回本冊題目

Q133 Sanitize 的 AER 與 PEL 應在何時產生?

跟著解說理解

通知告訴 Host 狀態有重要變化,PEL 則保存歷史;兩者都不是原 Sanitize 命令的第二次完成。

1. 事件何時成立、由誰觀察

AER 由啟動操作的 controller 回報;事件參數與 PEL.NSID 協助辨別 subsystem 或 namespace 目標。

確認通知支援、相關 AEC 設定、outstanding AER 與 PEL 支援。

AER 的 AET=6、LID=81h;AEI=01h 是 Completed,02h 是 Unexpected Deallocation,03h 是 Entered Media Verification。DW1 依定義標示目標。

2. 通知、讀取與確認的關係

啟動後記 Start;進入驗證先通知驗證階段;操作進入 Idle 或 Failure 才形成相應完成事件。收到通知後讀同一目標的 Log。

Completed 通知可以對應失敗完成,因此仍需讀 SOS/SANS。PEL Completion 同樣要看 SSTAT,不能只看事件名稱。

3. 沒有通知或紀錄時怎麼判斷

沒有 AER Request 時不能期待立刻收到 CQE;事件是否保留與遮蔽仍遵循 AER 規則。也不要在 Sanitize 期間強迫讀取當時不允許的 PEL。

對照事件的目標、原命令與 Log 狀態,區分「通知未送達」與「背景操作沒有完成」。

先查 AEC、AER Request 及回報 controller,再判斷通知是否真的缺失。

4. 分開核對事件通知與 Log 紀錄

依狀態轉移回報 Sanitize Operation Completed、Completed With Unexpected Deallocation 或 Entered Media Verification State,AER 的 LID=81h。 完整條件見本冊說明

支援對應 PEL 事件時,進入 Processing 記錄 Sanitize Start(09h);進入 Idle、Restricted Failure 或 Unrestricted Failure 記錄 Completion(0Ah)。 完整條件見本冊說明

來源:Base 2.4 §5.2.2 (PCIe-applicable events) · Base 2.4 §5.2.30.1.6 · Base 2.4 §5.2.26–5.2.27 · Base 2.4 §5.2.13.1.38 · Base 2.4 §8.1.27.1–8.1.27.5 · Base 2.4 §5.2.13.1.14.2.9–5.2.13.1.14.2.10 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events)

回本冊題目

Q134 Namespace Sanitize 如何指定目標並確認其他 Namespace 未被清除?

跟著解說理解

Namespace Sanitize 提供單一 namespace 的 Crypto Erase,讓清除資料的範圍小於整個 subsystem。資料隔離與共享管理限制仍要分開驗證。

1. 操作前先準備什麼

NSID 指定一個 active namespace;其他 controller 若能存取同一 namespace,也必須遵守該目標的清除限制。

先查 LID05h 中 Admin Opcode8Ch 的 CSUPP,再查 SANICAP.CES 及所需的 NVERS/SPRRS 能力;查詢路徑見 Q118。接著確認 Active List、Write Protection 與 MNSOIP 並行上限,不能把命令受支援直接當成目標目前可執行。

Opcode8Ch、SANACT=100b;PREQ 在 CDW10 bit4,不是 subsystem Sanitize 的 bit11。用該 NSID 讀 LID81h 與 NDE。

2. 先後順序與完成條件

先保存目標與非目標 namespace 的資料/狀態基準,再啟動並追蹤目標。完成後驗證目標清除結果,並確認非目標資料未因這次操作被清除。

目標 NDE 可設為 1;其他 namespace 逐一清除也不能自行推成 GDE=1,因 subsystem 清除範圍還包含其他位置。

3. 未符合條件時如何處理

NSID=0、FFFFFFFFh、inactive 或正在刪除會被 Invalid Namespace or Format 拒絕;寫入保護另回 Namespace is Write Protected。

將資料內容隔離、目標 I/O 限制與全域韌體更新限制分別記錄;非目標資料不被清除,不代表所有管理命令都不受影響。

來源:Base 2.4 §5.1.1–5.1.2 (PCIe commands) · Base 2.4 §5.2.14.2.1 · Base 2.4 §3.2.1 · Base 2.4 §5.2.26–5.2.27 · Base 2.4 §5.2.13.1.38 · Base 2.4 §8.1.27.1–8.1.27.5 · Base 2.4 §5.2.13.1.14.2.9–5.2.13.1.14.2.10 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §4.2.3 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events) · Base 2.4 §5.2.13.1.6

回本冊題目

Q135 Namespace Sanitize 遇到不存在、Inactive 或不支援的目標如何回應?

跟著解說理解

錯誤可能來自命令不受支援、目標不合法、動作不支援或並行資源不足。這些原因不能統一寫成 Invalid Namespace。

1. 先區分是哪一種失敗

檢查指定 namespace 與 subsystem 目前的清除狀態;subsystem failure 也可能阻止新 namespace 操作。

SANACT 只有 Crypto Erase 與狀態管理動作,010b/011b 在 Namespace 命令是保留值。

非法目標用 Invalid Namespace or Format;非法 SANACT 用 Invalid Field;超限用 Request Exceeds Maximum Namespace Sanitize Operations In Progress。原文 Figure104 列 3Ch,Figure455 列 12h,兩表有差異,不能擅自把其中一值當唯一驗收依據。

2. 用哪些資料確認原因

先讀 LID05h 中 Admin Opcode 8Ch 的 CSUPP,確認命令受支援。接著以 SANICAP 確認清除方法,從 Active/Allocated Lists 與 Write Protection 核對目標狀態,最後用 LID81h.MNSOIP 檢查並行限制。依這個順序,才能把支援能力接到目前目標的執行條件;完整查詢路徑見 Q118。

先用合法基準驗證支援,再分別測非法 NSID、寫入保護、非法 SANACT 與並行超量;保留每次測試前的狀態。

3. 結果與後續驗證

若啟動命令以非 Success 完成,不得為該命令開始清除、改寫該目標 Sanitize Status 或改變使用者資料。

除核對 Status,也驗證被拒絕的要求沒有啟動背景操作或改寫目標資料。

先確認是在驗證哪一個單獨失敗條件;並行數值爭議則保留原文兩處定位供查證。

來源:Base 2.4 §4.2.3 · Base 2.4 §3.2.1 · Base 2.4 §5.2.30.1.38, 8.1.18 · Base 2.4 §5.2.26–5.2.27 · Base 2.4 §5.2.13.1.38 · Base 2.4 §8.1.27.1–8.1.27.5 · Base 2.4 §5.2.13.1.14.2.9–5.2.13.1.14.2.10 · Base 2.4 §3.7.1–3.7.4 · Base 2.4 §5.2.13.1.2 · Base 2.4 §5.2.2 · Base 2.4 §5.2.13.1.14 (header, reset, hardware, Set Feature events) · Base 2.4 §5.2.13.1.6

回本冊題目

共用規則:各題連到的完整解釋

這些規則在本冊只完整說明一次。返回剛才的題目可用瀏覽器「上一頁」;特定命令或 Feature 的明文例外優先。

本主題的共用條件 · 是否更新 Error Information Log 或其他 Log?

成功後重新讀 Identify Namespace 的格式與容量,並查看 Changed Namespace 清單。錯誤時依 CQE.More 讀 Error Information;不能以一筆成功的 Get Log Page 取代 Format 本身的完成結果。

本主題的共用條件 · 是否記錄於 Persistent Event Log?

支援 PEL 與對應事件時,Format Start(07h)保存要求,Format Completion(08h)保存操作結果。Completion 的 FNVMS 與 INFO 必須一起讀;若原 Format 沒有 CQE,INFO 可為 0,不能直接解成格式化成功。

本主題的共用條件 · 是否產生 Asynchronous Event?

依狀態轉移回報 Sanitize Operation Completed、Completed With Unexpected Deallocation 或 Entered Media Verification State,AER 的 LID=81h。由 Admin SQ 啟動時,僅啟動該操作的 controller 回報這次通知;仍須查看 Log 分辨成功、失敗或驗證階段。

SQ
Submission Queue,提交佇列

本主題的共用條件 · 是否記錄於 Persistent Event Log?

支援對應 PEL 事件時,進入 Processing 記錄 Sanitize Start(09h);進入 Idle、Restricted Failure 或 Unrestricted Failure 記錄 Completion(0Ah)。Completion 也包含失敗,事件 NSID 可用來分辨 subsystem 與 namespace 目標。

原文定位與既有圖表判讀

Base 的文件頁碼等於 PDF 頁碼減 26;NVM 與 PCIe 兩份規格的文件頁碼則與 PDF 頁碼相同。以下依提供的 PDF 本文列出章節、頁碼及 Figure 編號。若同一頁包含其他主題,只引用本題需要的定義,不納入 Fabrics 或 PCIe Link、封包內容。

  • Base 2.4 · §3.1.3.4 (Figure 28 PCIe I/O-controller rows and O/M/P note only)
    文件頁 45–47 · PDF 71–73 · Figure 28
  • Base 2.4 · §3.2.1
    文件頁 78–81 · PDF 104–107
  • Base 2.4 · §3.7.1–3.7.4
    文件頁 120–124 · PDF 146–150
  • Base 2.4 · §4.2.3
    文件頁 145–155 · PDF 171–181 · Figure 101–105
  • Base 2.4 · §5.1.1, 5.2.11
    文件頁 178–179, 206–209 · PDF 204–205, 232–235 · Figure 144, 194–196
  • Base 2.4 · §5.1.1–5.1.2 (PCIe commands)
    文件頁 178–181 · PDF 204–207 · Figure 144–146
  • Base 2.4 · §5.2.2
    文件頁 183–190 · PDF 209–216 · Figure 150–156
  • Base 2.4 · §5.2.2 (PCIe-applicable events)
    文件頁 183–191 · PDF 209–217 · Figure 150–160
  • Base 2.4 · §5.2.13–5.2.13.1.1
    文件頁 212–218 · PDF 238–244 · Figure 203–211
  • Base 2.4 · §5.2.13.1.2
    文件頁 218–220 · PDF 244–246 · Figure 212
  • Base 2.4 · §5.2.13.1.5
    文件頁 226 · PDF 252
  • Base 2.4 · §5.2.13.1.6
    文件頁 226–229 · PDF 252–255 · Figure 216–217
  • Base 2.4 · §5.2.13.1.14 (header, reset, hardware, Set Feature events)
    文件頁 244–256, 258, 262–264 · PDF 270–282, 284, 288–290 · Figure 232–244, 246, 252–253
  • Base 2.4 · §5.2.13.1.14.2.7–5.2.13.1.14.2.8
    文件頁 259–261 · PDF 285–287 · Figure 248–249
  • Base 2.4 · §5.2.13.1.14.2.9–5.2.13.1.14.2.10
    文件頁 261–262 · PDF 287–288 · Figure 250–251
  • Base 2.4 · §5.2.13.1.38
    文件頁 313–320 · PDF 339–346 · Figure 312
  • Base 2.4 · §5.2.14.1
    文件頁 336–340 · PDF 362–366 · Figure 332–337
  • Base 2.4 · §5.2.14.2.1
    文件頁 340–387 · PDF 366–413 · Figure 338–341
  • Base 2.4 · §5.2.26–5.2.27
    文件頁 448–454 · PDF 474–480 · Figure 451–455
  • Base 2.4 · §5.2.30.1.6
    文件頁 466–468 · PDF 492–494 · Figure 474
  • Base 2.4 · §5.2.30.1.15
    文件頁 475–477 · PDF 501–503 · Figure 491
  • Base 2.4 · §5.2.30.1.16
    文件頁 477–478 · PDF 503–504 · Figure 492
  • Base 2.4 · §5.2.30.1.38, 8.1.18
    文件頁 512, 664–666 · PDF 538, 690–692 · Figure 541, 735–737
  • Base 2.4 · §8.1.27.1–8.1.27.5
    文件頁 711–732 · PDF 737–758 · Figure 770–779
  • NVM Command Set 1.3 · §4.1.2
    文件頁 62–63 · PDF 62–63 · Figure 91
  • NVM Command Set 1.3 · §4.1.5.1–4.1.5.4
    文件頁 84–107 · PDF 84–107 · Figure 123–130
  • NVM Command Set 1.3 · §4.1.7, 5.12
    文件頁 113, 173–175 · PDF 113, 173–175 · Figure 200–201

需要看欄位圖時

以下連結可開啟對應的圖表教學,查閱欄位及判讀方式。每張圖保留固定的教學位置,方便之後反覆查詢。

使用的原始文件
  • NVM Express Base Specification · Revision 2.4 · 2026-07-31
    NVM-Express-Base-Specification-Revision-2.4-Ratified-2026.07.31.pdf
  • NVM Express NVM Command Set Specification · Revision 1.3 · 2026-07-31
    NVM-Express-NVM-Command-Set-Specification-Revision-1.3-Ratified-2026.07.31.pdf
  • NVM Express NVMe over PCIe Transport Specification · Revision 1.4 · 2026-07-31
    NVM-Express-NVMe-over-PCIe-Transport-Specification-Revision-1.4-Ratified-2026.07.31.pdf
Jia-Chang

Jia-Chang

Human

Comments

  Write a comment ...