教學 1 · 先問要改格式,還是要清資料
將 4KiB 格式改成 512-byte 格式,是 Format 的問題;想讓原資料無法恢復,則要明確選擇清除方法及影響範圍。Format 的 Secure Erase 選項與 Sanitize 也不能只因都提到清除就視為等價。先確認需求,才能查對支援欄位與命令。
NVMe · Q1–328
Q118–Q135
Format 改變 namespace 格式;Sanitize 處理資料清除。兩者的範圍、完成點與 reset 行為不同,本冊以一次操作的前、中、後狀態逐步區分。
每個問題都接著完整解說,依內容帶讀欄位、比較機制或追蹤流程。先看本冊總覽,再沿問題閱讀;必要條件與正常路徑直接顯示。所有數字案例均為教學假設;Status 以 SCT/SC 表示,代碼後的 h 代表十六進位。
支援 subsystem Overwrite,不代表支援 namespace Overwrite。
| 操作 | 主要選擇 | 完成證據 |
|---|---|---|
| Format NVM | LBAF、metadata、PI、SES | Format CQE 與新格式 |
| Subsystem Sanitize | SANACT、範圍與選項 | 啟動 CQE 後還看 LID81h |
| Namespace Sanitize | NSID、Crypto Erase | 查目標 namespace 的狀態 |
舉例看懂: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
將 4KiB 格式改成 512-byte 格式,是 Format 的問題;想讓原資料無法恢復,則要明確選擇清除方法及影響範圍。Format 的 Secure Erase 選項與 Sanitize 也不能只因都提到清除就視為等價。先確認需求,才能查對支援欄位與命令。
命令啟動成功後,controller 可以在背景繼續清除。這時 Log 顯示進行中並不矛盾。Host 需要繼續觀察 SOS、SPROG 與可能的 verification state;最終成功、失敗或進入特定 failure mode,才是媒體操作的結果。不要只保留最初 Success CQE。
Sanitize 有跨 reset 與失電恢復後持續的規則;Format 的中斷結果則需重新探索。恢復後先查原操作範圍、目前格式或 Sanitize Status,再決定下一步。未收到 CQE 不代表操作完全沒做,重送前必須先確定裝置目前狀態。
需求:只透過查詢,確認 controller 是否支援 Sanitize Namespace。以下從命令清單找到操作碼,再走到支援紀錄的對應項目,最後讀取支援位元。
支援 Opcode、支援某種操作,以及當前允許執行,是三個要分開確認的問題。這能避免把「支援 Sanitize」誤讀成任何清除方法都可使用。
Format 的範圍由 FNA、SES 與 NSID 決定;Sanitize 和 Sanitize Namespace 則是不同命令、不同清除目標。
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 媒體驗證能力。
以下回傳值都是教學假設。使用同一個 PCIe I/O controller、CC.CSS=000b 及 UUID Index=0;查詢成功後才解讀 buffer。Figure 28 是規格的命令清單,不是這台 SSD 的實測能力表。
| 查詢步驟與原文位置 | 要取出的資訊 | 這一步能判斷什麼 |
|---|---|---|
| 1 · Figure 28,文件頁 46/PDF 72 | Sanitize Namespace → Admin Opcode=8Ch,支援要求為 O(Optional)。 | 找到要查的命令與編碼。Optional 表示實作可選,還不能判定這台 controller 有支援。 |
| 2 · Identify Controller,Figure 338,文件頁 355、361~362/PDF 381、387~388 | CNS=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~241 | Opcode=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 253 | Admin 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 的能力。 |
如果有效 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 或所有管理命令都受支援。
先確認查詢通道與 Log 支援,再讀正確 entry;若 CSUPP=1,才繼續查方法、參數與目標狀態。查詢過程只讀取資訊,不需要啟動清除。準備真的執行時,才進一步確認 Active NSID、寫入保護、Sanitize 狀態、並行上限與待啟用韌體限制。
Identify 與 Get Log Page 成功,表示已取得可判讀的能力資料。若 8Ch 的 CSUPP=1,可以回答「controller 宣告支援 Sanitize Namespace」;這不表示 NSID=7 現在一定能接受命令,更不表示資料已經清除。
查詢 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
來源: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
Format 用於改變媒體格式,也可要求 Secure Erase;Sanitize 則以清除目標中的使用者資料為主,不是一般的格式切換。
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。
檢查 OACS、FNA、SANICAP、namespace 狀態及支援的格式。不能只看到「Crypto Erase」同名,就省略命令範圍差異。
先回答要改格式、清除哪個範圍、是否需要指定清除方法,再選命令。所有 namespace 各做一次 Sanitize,也不等於 subsystem 的全部使用者資料位置都已處理。
Format CQE 在格式化完成後回傳;Sanitize 啟動成功後仍以背景方式進行,要另查 LID81h。
不合法格式使用 Invalid Format;不支援 SANACT 使用 Invalid Field。各命令的拒絕條件不能互相套用。
例如需要改成 4 KiB LBA,應選 Format;需要清除整個 subsystem,不能只指定一個 namespace 然後把 NDE 當 GDE。
來源: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)
來源: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)
格式選擇決定後續 I/O 的資料長度與 metadata 位置。選錯會讓 Read/Write 的 buffer 與保護資訊不符合 namespace 的格式。
設定適用於 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。
選定一個已宣告的格式,確認 metadata 與 PI 能力,再組合欄位。假設 LBAF2 是 4096-byte data+16-byte metadata,MSET=1 時每個 extended LBA 傳輸長度是 4112 bytes。
成功後 FLBAS/DPS 應反映設定;logical block 大小改變時,NSZE/NCAP 可能改變,應重新讀取。
未支援格式回 Invalid Format;未啟用必要 LBAFEE 的格式回 Invalid Namespace or Format。共享 FDP RUH 還須符合共同格式限制。
用新格式重算 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)
來源: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)
拒絕原因可能是格式不存在、Host 未啟用格式、namespace 受保護,或與其他操作衝突。不同原因需要不同修正。
先計算 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。這裡的「可」不能改寫成每次都必須拒絕。
用 LBAF、LBAFEE、FNA、Write Protection 狀態,以及現有 I/O/Admin 操作確認前提。
負向測試一次製造一項問題。例如測不支援 LBAF,先確保 NSID 合法、未受保護、沒有其他操作衝突。
正確拒絕不等於格式已改變;讀回設定以確認未將失敗命令錯當成成功操作。
測試需分清 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)
來源: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)
Host 仍需要查詢狀態、維持通知與管理 queue,所以 Format 期間不應一概封鎖全部 Admin 命令。
限制取決於操作是否影響正在 Format 的 namespace,以及 Figure144 對命令或 Log 的附加條件。
常見允許項包含 Abort、AER、queue 建立/刪除、Identify、Get Features、Get Log Page 的指定 LID 及 Keep Alive。Set Features 中的 Namespace Write Protection Config 不允許。
先確認命令本身受支援,再查 Format 期間的允許清單;列在允許清單不會讓選配功能自動變成支援。
以 Figure144 逐項檢查。Error Information 的 LBA 回 0;Self-test 僅 Controller DST 建議允許;不能由「Get Log Page 允許」推論所有 LID 都允許。
允許的查詢回目前狀態,不表示 Format 已完成。Format 的 CQE 或完整結果證據仍要另外確認。
未列出的 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)
失去 CQE 代表 Host 不知道結果,不等於操作必定沒做,也不等於已成功。恢復後應以現況與事件證據重新建立判斷。
檢查原 Format 範圍內所有 namespaces,以及其他 controller 對共享 namespace 的存取狀態。
讀 Identify Namespace 的 FLBAS、DPS、NSZE/NCAP、支援時的 FPI,及 PEL Format Completion。
Format Completion Event 的 FNVMS 說明格式化結果,INFO 保存曾回報的 Status;沒有 CQE 時 INFO=0 不能當成功。
先恢復 controller 與 Admin Queue,再保存事件、讀回新格式、確認可用性;若仍無法確定操作完成,就不要直接以舊格式恢復 I/O。
可以確認目前格式與完成狀態後,Host 才配置對應 buffer 與 PI。若需重新 Format,先依目前能力與範圍建立新命令。
| 觸發方式 | 這項操作或狀態會如何變化 |
|---|---|
| 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。先前資料可能已被破壞,不能因命令沒有回成功就假設資料仍在。 |
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)
Format 改變後續 I/O 的解讀方式,因此 Host 必須更新快取的 namespace 資訊,避免用舊 LBA 大小或 PI 設定讀寫。
更新的是受影響 namespace 的格式及相關容量;Format 不等同 Create/Delete,不能預設一定產生新 NSID。
查 Identify Namespace 與必要的 NVM 特定結構,確認 FLBAS、DPS、LBAF、NSZE、NCAP 與 FPI。
FLBAS 表示使用中的格式及 metadata 傳輸方式;DPS 表示 PI 設定;NSZE/NCAP 以新的 logical block 為單位。
等待 Format 成功 CQE,重新 Identify,再依新格式重算 LBA 範圍與 buffer 大小;有共享存取者時同步更新它們的配置。
設定讀回應與命令要求一致;若 block 大小改變,NSZE/NCAP 可能不同,不能用「數字必須完全不變」驗證容量。
若成功 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)
來源: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)
先區分命令因參數被拒絕,與格式化已開始後失敗;後者可能已改變資料,不能當成完全沒有執行。
證據需對應同一筆 Format 及同一範圍;其他 namespace 的事件不能當成這筆命令的結果。
保存 CQE 的 SCT/SC/M/DNR,及 PEL 支援與事件有效性。
Error Log 用 SQID/CID/ECNT 關聯;Format Start 保存參數,Completion 的 FNVMS/INFO 記錄結果與曾回報狀態。
先看 Format 是否已進入執行階段,以及 PEL 是否存在相符的 Start/Completion。
先讀原 CQE,再依 M 取得補充資訊,最後以 PEL 與 Identify 現況補足過程。缺少某種記錄時先確認其要求,不硬湊三份一對一證據。
能說明失敗原因及目前是否可用,就是有效診斷。若結果仍不確定,保留不確定性而不是假設格式化回復。
Multiple errors 可能有不同合法 Status;INFO=0 也可能只是沒有 CQE,不可以忽略 FNVMS。
把命令參數、結果與目前格式比對,檢查是否有「回報成功但格式不符」或「失敗卻被 Host 視為成功」的矛盾。
成功後重新讀 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)
SANICAP 告訴 Host 哪些清除方法可用,以及 No-Deallocate、驗證等延伸能力。它不是「非零就所有方法皆可用」的布林值。
CES、BES、OWS 對應 subsystem 清除方法;namespace 清除另有能力宣告,且本版只定義 Crypto Erase。
讀 Identify Controller.SANICAP,並交叉查 Command Effects 中的 84h/8Ch 與 LID81h 支援。
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 已更新;能力支援不保證每次背景清除都能成功。
支援命令但 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)
來源: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)
Overwrite 的欄位決定覆寫內容與次數;NDAS 則控制成功後是否釋放配置。資料清除與 deallocation 是不同動作,必須分開理解。
這些 Overwrite 與 NDAS 欄位屬 subsystem Sanitize,不能照搬到 Sanitize Namespace 的 CDW10。
確認 OWS、No-Deallocate Inhibited 與 No-Deallocate Modifies Media After Sanitize,必要時讀 FID17h.NODRM。
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。
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)
來源: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)
進度比例、操作結果、狀態機位置與資料是否仍保持已清除,是四個不同問題。分開看,才能避免把 FFFFh 或 GDE=1 當成全部流程已完成。
LID81h 依 NSID 選 subsystem 或指定 namespace;namespace 回覆中的 NDE 不能當成整個 subsystem 的 GDE。
確認 SANICAP 與 verification 能力,再讀同一目標的整份一致狀態快照。
SPROG/65536 是適用處理階段的完成比例;SOS 表示未開始、成功、進行中、失敗等;SANS 指狀態機位置;GDE/NDE 還會受後續使用者寫入影響。
先看 SOS 是否仍 Sanitizing,再看 SANS 在 Processing、Media Verification 或 Post-Verification Deallocation,最後才解讀 SPROG。
SPROG=8000h 在適用處理階段代表約 50%;FFFFh 在未處理或 Media Verification 時也可出現,不是獨立成功證據。
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)
來源: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)
清除期間必須阻止使用者資料重新流入或被讀出,但仍保留查詢、通知與必要管理能力。允許清單因此有命令、選項與 Log 層級限制。
限制適用於 subsystem 的全部 controller;換另一個 controller 不能繞過同一清除狀態。
Identify、AER、Get Features、queue 管理及指定 Log 可用;Sanitize Status 可查。PEL 與 vendor-specific Log 在此清除期間禁止,Self-test 也禁止;Error Log 的 LBA 必須回 0。
查 Figure144、Sanitize 狀態機,以及 NVM Figure200/201 的命令集補充。
先判斷狀態,再按命令及 LID 套限制。一般 I/O 受阻;Flush 與 Media Verification Read 有特別規則,不能用「全部 I/O 一律禁止」蓋過例外。
允許的命令正常完成;不允許的命令被拒絕,而背景 Sanitize 繼續。清除進度查詢建議不要過度頻繁,以免干擾進度。
進行中通常回 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)
來源: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)
Sanitize 的清除保證不能讓 Reset 或拔電變成逃脫途徑,因此背景操作會跨 Controller Level Reset 與 power cycle 繼續。
持續的是所選清除目標的狀態機與操作,不是原本已消失的 Admin Queue 或 AER Request。
重新讀 LID81h,確認 SOS、SANS、SCDW10、MVCNCLD 與目標 NSID;先恢復管理通道才能查詢。
MVCNCLD 表示 Media Verification 被取消。傳輸層或 Subsystem Reset 的特定條件會設定它,不能把它解讀成 Sanitize 取消。
重設前保存狀態;恢復後先讀同一目標的 Log,再判斷是否繼續處理、轉入 deallocation 或已完成,不直接重新開始另一筆操作。
合理結果是背景操作持續或已依狀態機完成;斷電期間沒有處理進度並不違規,但恢復後不能忘記操作。
| 觸發方式 | 這項操作或狀態會如何變化 |
|---|---|
| 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 就宣告成功。 |
仍在處理時重送啟動要求可能被 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)
操作結果與目前狀態不一定一樣。離開 Failure Mode 後,狀態可以回 Idle,但最近一次清除仍然是失敗。
以同一 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 等實際狀態。
先看 SANS,確認讀者所說的「失敗模式」真的是目前狀態,而不是歷史結果。
先查看結果,再判斷當前是否仍被失敗限制阻擋。若 SANS=Idle 但 SOS=Failed,確認是否曾執行合法 Exit Failure Mode。
成功不只看 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)
Exit Failure Mode 可以在允許的情況下解除失敗狀態造成的存取限制,但它不會把未清除的資料補清,也不會把失敗結果改成成功。
動作針對指定清除目標;subsystem 與 namespace 各有狀態機。
SANACT=001b 表示 Exit Failure Mode。它不是新一次 Block/Crypto/Overwrite 清除。
先讀 SANS 與原 SCDW10.AUSE。AUSE 決定操作進入 restricted 或 unrestricted 路徑。
Unrestricted Failure 可藉此回 Idle;Restricted Failure 必須以符合限制的新清除操作復原。Idle 收到此動作不視為錯誤。
合法退出後可回到允許正常存取的狀態,但 SOS 仍可報告最近操作失敗,GDE/NDE 也不能憑退出動作設成成功清除。
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)
通知告訴 Host 狀態有重要變化,PEL 則保存歷史;兩者都不是原 Sanitize 命令的第二次完成。
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 依定義標示目標。
啟動後記 Start;進入驗證先通知驗證階段;操作進入 Idle 或 Failure 才形成相應完成事件。收到通知後讀同一目標的 Log。
Completed 通知可以對應失敗完成,因此仍需讀 SOS/SANS。PEL Completion 同樣要看 SSTAT,不能只看事件名稱。
沒有 AER Request 時不能期待立刻收到 CQE;事件是否保留與遮蔽仍遵循 AER 規則。也不要在 Sanitize 期間強迫讀取當時不允許的 PEL。
對照事件的目標、原命令與 Log 狀態,區分「通知未送達」與「背景操作沒有完成」。
先查 AEC、AER Request 及回報 controller,再判斷通知是否真的缺失。
依狀態轉移回報 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)
來源: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)
Namespace Sanitize 提供單一 namespace 的 Crypto Erase,讓清除資料的範圍小於整個 subsystem。資料隔離與共享管理限制仍要分開驗證。
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。
先保存目標與非目標 namespace 的資料/狀態基準,再啟動並追蹤目標。完成後驗證目標清除結果,並確認非目標資料未因這次操作被清除。
目標 NDE 可設為 1;其他 namespace 逐一清除也不能自行推成 GDE=1,因 subsystem 清除範圍還包含其他位置。
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
來源: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
錯誤可能來自命令不受支援、目標不合法、動作不支援或並行資源不足。這些原因不能統一寫成 Invalid Namespace。
檢查指定 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,兩表有差異,不能擅自把其中一值當唯一驗收依據。
先讀 LID05h 中 Admin Opcode 8Ch 的 CSUPP,確認命令受支援。接著以 SANICAP 確認清除方法,從 Active/Allocated Lists 與 Write Protection 核對目標狀態,最後用 LID81h.MNSOIP 檢查並行限制。依這個順序,才能把支援能力接到目前目標的執行條件;完整查詢路徑見 Q118。
先用合法基準驗證支援,再分別測非法 NSID、寫入保護、非法 SANACT 與並行超量;保留每次測試前的狀態。
若啟動命令以非 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
來源: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 的明文例外優先。
成功後重新讀 Identify Namespace 的格式與容量,並查看 Changed Namespace 清單。錯誤時依 CQE.More 讀 Error Information;不能以一筆成功的 Get Log Page 取代 Format 本身的完成結果。
支援 PEL 與對應事件時,Format Start(07h)保存要求,Format Completion(08h)保存操作結果。Completion 的 FNVMS 與 INFO 必須一起讀;若原 Format 沒有 CQE,INFO 可為 0,不能直接解成格式化成功。
依狀態轉移回報 Sanitize Operation Completed、Completed With Unexpected Deallocation 或 Entered Media Verification State,AER 的 LID=81h。由 Admin SQ 啟動時,僅啟動該操作的 controller 回報這次通知;仍須查看 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、封包內容。
以下連結可開啟對應的圖表教學,查閱欄位及判讀方式。每張圖保留固定的教學位置,方便之後反覆查詢。
NVM-Express-Base-Specification-Revision-2.4-Ratified-2026.07.31.pdfNVM-Express-NVM-Command-Set-Specification-Revision-1.3-Ratified-2026.07.31.pdfNVM-Express-NVMe-over-PCIe-Transport-Specification-Revision-1.4-Ratified-2026.07.31.pdf