先確認誰建立紀錄
01-01主機發起與控制器發起的紀錄有不同建立方式;先分清來源,才能正確選擇讀取與確認完成的做法。
NVMe · 規格與原理
00.01.Telemetry 把裝置收集的內部狀態整理成主機可讀取的紀錄。這篇的重點是取得一份完整且一致的資料:誰建立紀錄、各資料區有多大,以及分段讀取期間紀錄是否已經換成另一份。
01-01主機發起與控制器發起的紀錄有不同建立方式;先分清來源,才能正確選擇讀取與確認完成的做法。
02-01先讀表頭,再用資料區邊界決定要讀哪些區段;標準定義位置,廠商資料格式決定如何理解內容。
03-01資料可能分多次取回;要檢查紀錄識別與變更資訊,避免把不同時間的內容拼成一份。
00.02.先分清主機發起與控制器發起的紀錄,再從 header 得知資料區範圍。讀取多個區段時,要保留同一份紀錄的識別資訊,並依該類紀錄的規則確認讀取完成;資料區位置可由標準解釋,廠商自訂內容則需要相應格式資料。
01.01.Telemetry 以 512 bytes 為一個 block,header 在 block 0。每個 Data Area 都從 block 1 開始,所以 Area 2 是較大的累積範圍;不能把它想成只放在 Area 1 後面的另一段資料。
01.02.假設 Area 1 的 Last Block=65,該 Area 的資料是 block 1 到 65,共 65×512=33,280 bytes。連同 header 讀取則是 66×512=33,792 bytes。數量差 1 來自有沒有包含 block 0,並非 Last Block 又套了一次從 0 起算的數量編碼。
01.03.若 Area 2 的 Last Block=1000,它包含 block 1 到 1000,已包含前面 65 個 blocks。若主機已取得 Area 1,只想補上到 Area 2 的資料,新增部分才是 block 66 到 1000。比較兩個終點,可以分清完整集合與新增區段。
01.04.Area 4 的可用性需要結合相應支援與主機宣告。Last Block、generation number 等標準欄位可用來建立讀取計畫;payload 的廠商自訂內容則需要相應格式文件,不能單靠位置把任意 bytes 當成溫度或錯誤碼。
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.30; 5.2.13.1.8-5.2.13.1.9, 文件頁 232-237,733-737, PDF 頁 258-263,759-763
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.30; 5.2.30.1.15, 文件頁 476,733-734, PDF 頁 502,759-760
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.8-5.2.13.1.9, 文件頁 232-237, PDF 頁 258-263
01.06.Telemetry 的 header 為 block 0,每個 block 是 512 bytes;所有 Data Areas 都從 block 1 起算。Area 2/3/4 是更大的累積集合,不是接在 Area 1 後的獨立區塊。Last Block 是包含在內的最後 block 編號;payload 格式與大小由廠商定義。
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.30; 5.2.13.1.8-5.2.13.1.9, 文件頁 232-237,733-737, PDF 頁 258-263,759-763
01.07.Controller 以 LPA.TS 宣告 Telemetry 支援,以 LPA.DA4S 宣告 Area 4;Host 以 FID 16h Host Behavior Support 的 ETDAS=1 宣告支援。DA4S 與 ETDAS 一起決定 Area 4 是否適用;建立 Area 4 時也須建立有資料的 Area 3。
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.30; 5.2.30.1.15, 文件頁 476,733-734, PDF 頁 502,759-760
01.08.讀取 LID 07h/08h 時,offset 與 transfer length 必須是 512 bytes 的倍數,否則回報 Invalid Field in Command。Controller 回傳被要求的 blocks,但超過適用最後 Data Area 邊界的資料不具規格定義的內容。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.8-5.2.13.1.9, 文件頁 232-237, PDF 頁 258-263
| 資料區域 | 包含哪些 blocks | Last Block 數值的限制 |
|---|---|---|
| Area 1 | 1 到 L1 | L1=0 表示沒有資料 |
| Area 2 | 1 到 L2 | L2 >= L1 |
| Area 3 | 1 到 L3 | L3 >= L2 |
| Area 4 | 1 到 L4 | 支援條件另行檢查 |
02.01.LID 07h 的 CTHID 決定是否要求建立新的 Host-Initiated capture。需要新紀錄時提出建立要求;後面的分段讀取沿用既有紀錄。若每段都要求重新建立,取得的資料就可能分屬不同時間。
02.02.讀取 header 並保留相應 generation number,再依 Last Block 計畫每段長度和位置。Get Log Page 的 NUMD 決定本次回傳量,LPO 決定從哪個位置取;兩者與整份 capture 的大小不同。
02.03.假設第一次 header 的 generation 是 7,資料取完後再讀 header 卻得到 8。這時不能把剛才各段當成一份完整的一致紀錄;應依該類 log 的規則重新取得相符的資料。兩次值相同也必須搭配正確的建立、保留及確認流程,而非任意跨時間拼接。
02.04.LID 08h 的資料由控制器建立。先看 TCDA 與相應通知,再依保留事件的設定讀取;需要解除保留或確認處理時,放在適當的完成步驟。過早確認可能改變後續可取得的資料或通知狀態。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.8, 文件頁 232-235, PDF 頁 258-261
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.30, 文件頁 734-735, PDF 頁 760-761
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.9, 文件頁 237, PDF 頁 263
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.8-5.2.13.1.9, 文件頁 233,235,237, PDF 頁 259,261,263
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.30; 5.2.30.1.6, 文件頁 734-735,466-468, PDF 頁 760-761,492-494
02.06.LID 07h 的 CTHID 是 CDW10 bit 8;設為 1 要求新 capture,0 不更新該 snapshot。MCDA 是 bits 11:9,只有 MCDAS=1 且 CTHID=1 時適用;001b 至 100b 分別要求建立至 Area 1 至 Area 4,000b 由 controller 決定。MCDAS 來自 Supported Log Pages 的 LID Specific Parameter。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.8, 文件頁 232-235, PDF 頁 258-261
02.07.Host 讀 header 記住 generation,以 RAE=1 分段收集,再重讀 header 比對 generation;不同就重新讀取。讀 08h 還需確認 TCDA 未被其他讀取者清除;完成後用 RAE=0 讀任一部分來 acknowledgement。Generation 是 8-bit,FFh 後回到 0h。
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.30, 文件頁 734-735, PDF 頁 760-761
02.08.Base 2.4 的 TCDA=0 表示自上次成功 RAE=0 讀取後沒有更新。第一次 capture 前 header 可讀;capture 過後,即使 TCDA=0,仍回傳 header 與目前保存的 internal state。不能把舊版『0 表示只有 header』的解讀沿用至 2.4。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.9, 文件頁 237, PDF 頁 263
02.09.07h 的 snapshot 不變,直到新的 CTHID=1、Firmware Commit 或 power-on reset。08h Areas 1–3 跨所有 resets 保留,Area 4 可跨 Controller Level Resets 保留;08h 的 TCDA、TCDGN 跨 power cycles 與 resets 保留。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.8-5.2.13.1.9, 文件頁 233,235,237, PDF 頁 259,261,263
02.10.Host 以 FID 0Bh 的 TLN bit 10 啟用 Telemetry Log Notices;controller 以 Notice 類型的 Telemetry Log Changed AER 通知,也可由 07h/08h 的 TCDA 得知資料更新。
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.30; 5.2.30.1.6, 文件頁 734-735,466-468, PDF 頁 760-761,492-494
| 快照控制欄位 | 執行或回報的動作 | 分段讀取時須注意什麼 |
|---|---|---|
| CTHID=1 | 觸發新 07h capture | 後續分段讀不要再次 create |
| MCDA | 限制建立到哪個 area | 先看 MCDAS |
| RAE=1 | 保留事件 | 不保證沒有其他 reader |
| TCDA=0 | 上次 acknowledgement 後未更新 | 2.4 不等於 payload 消失 |
03.01.以下依概念整理規格中的圖表。每組先說明讀取順序與要判斷的問題,接著列出各圖的欄位或行為說明。可以由正文的連結跳到對應組別,也可以用這一節檢查自己能否把欄位連回完整操作。
03.02.把 header 放在 block 0,再讓各 Area 的長條都從 block 1 開始。比較終點而不累加長條;計算新增部分時才使用兩個 Last Block 的差。Area 4 的存在還需查對應支援能力。
回到本節的解釋與範例03.03.先選 Host-Initiated 或 Controller-Initiated log,再由 header 規劃範圍並保留紀錄識別。資料區終點、資料是否可用及版本資訊共同決定能否組成完整 capture。
| 一起判讀的欄位或標示 | 如何共同決定操作或結果 | 帶入情境後怎麼讀 |
|---|---|---|
| CTHID/MCDA/MCDAS | CTHID 要求建立,MCDAS 回報是否支援建立範圍選擇,MCDA 選想建立到哪個 Area。 | 分段讀既有紀錄時不反覆設 CTHID=1;MCDA 的使用還需符合支援條件。 |
| THDA1LB–THDA4LB/TCDA1LB–TCDA4LB | 各 Area 的含終點 block 編號;每個 Area 都從 block 1 開始。 | 終點 65 表示資料量 65×512 bytes;加上 header 才是 66×512 bytes。 |
| THDGN/TCDGN/TCDA | generation number 辨認版本;TCDA 指控制器發起資料是否可用。 | 兩次讀 header 的 generation 不同時,不能直接把中間取得的各段視為同一份紀錄。 |
| THS/TCS/RID | scope 與 Reason Identifier 補充紀錄範圍及建立原因;廠商定義部分仍需相應格式。 | 知道資料區大小不會自動知道 payload 每個 byte 的用途;RID 也不能被當成一般 NVMe status code。 |
| Last Block=0/相同終點 | 要結合各 Area 的可用規則解釋沒有新增範圍的情形。 | Area 1=0、Area 2=1000 時,不可把 Area 2 的 1000 又加到 Area 1 後方。 |
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.8, Figure 220, 文件頁 232-233, PDF 頁 258-259
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.8, Figure 221, 文件頁 234-235, PDF 頁 260-261
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.8, Figure 222, 文件頁 235, PDF 頁 261
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.9, Figure 223, 文件頁 236-237, PDF 頁 262-263
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.30, Figure 780, 文件頁 736, PDF 頁 762
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.30, Figure 781, 文件頁 737, PDF 頁 763
Base221-1Host-Initiated Telemetry header 給出各資料區終點與紀錄版本。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.8, Figure 221, 文件頁 234-235, PDF 頁 260-261
Base221-2讀完第一段後若 generation 資訊改變,就要重新確認是否仍為同一份紀錄,不能僅按 byte offset 繼續串接。
Base223-1Controller-Initiated Telemetry 由控制器建立並回報可讀取狀態。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.9, Figure 223, 文件頁 236-237, PDF 頁 262-263
Base223-2TCDA 表示有相應資料可供取得時,主機還要依 TCDGN 等資訊讀完同一份紀錄並遵守確認規則。
Base780-1Telemetry 各資料區終點以 Last Block 描述,可由相鄰終點相減得大小。
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.30, Figure 780, 文件頁 736, PDF 頁 762
Base780-2DA1 最後 block=65、DA2=1000 時,DA2 有 1000−65=935 blocks,即 478720 bytes;不用再加一次 header。
Base781-1未填入的資料區可由相同或零的終點表示。
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.30, Figure 781, 文件頁 737, PDF 頁 763
Base781-2DA1 終點為 0、DA2 為 1000 時,資料區 2 從 header 後開始,占 1000×512=512000 bytes;不能憑「第二區」就假設前面一定有第一區資料。
03.04.Identify 回報 Telemetry 與 Area 4 的能力,Host Behavior Support 則宣告主機是否能處理延伸資料區。兩邊條件配合後,Area 4 欄位才按適用規則使用。
| 一起判讀的欄位或標示 | 如何共同決定操作或結果 | 帶入情境後怎麼讀 |
|---|---|---|
| LPA:Telemetry 支援/DA4S | Telemetry 的基本支援與 Data Area 4 支援是不同能力。 | 能取得 LID 07h 不代表一定能取得 Area 4;先檢查 DA4S。 |
| Host Behavior Support.ETDAS | 主機以 ETDAS 宣告能理解延伸 Telemetry Data Area。 | 若控制器支援 Area 4 但主機未作相應宣告,不能直接使用 Area 4 大小推算應讀的最大範圍。 |
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.14.2.1, Figure 338, 文件頁 340-382, PDF 頁 366-408
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.15, Figure 491, 文件頁 476-477, PDF 頁 502-503
Base338-1Identify Controller 先告知能力與限制,主機再決定可使用的操作。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.14.2.1, Figure 338, 文件頁 340-382, PDF 頁 366-408
Base338-2規格列出某選用命令時,先查相應支援欄位再發出要求;「命令有定義」與「這台控制器支援」是不同證據。
Base491-1Host Behavior Support 告知控制器主機能處理哪些延伸行為。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.15, Figure 491, 文件頁 476-477, PDF 頁 502-503
Base491-2裝置支援某功能與主機宣告已能使用它不同;先確認能力,再看主機是否按對應欄位啟用相容行為。
03.05.先選 07h 或 08h 流程,再區分建立、讀取和確認事件的步驟。07h 後續分段不再重複觸發建立;08h 同時檢查 generation 和資料可用狀態,不能只靠 generation 相等就忽略其他主機的確認操作。
回到本節的解釋與範例Base220-1Host-Initiated Telemetry 的參數選擇是否建立新資料及收集範圍。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.8, Figure 220, 文件頁 232-233, PDF 頁 258-259
Base220-2想分段讀同一份紀錄時,不應每段都要求重新建立,否則可能把不同時間的資料接在一起。
Base222-1MCDAS 回報主機發起 Telemetry 支援的收集資料區能力。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.8, Figure 222, 文件頁 235, PDF 頁 261
Base222-2打算要求較大的資料區前,先查支援能力,再設 MCDA;要求欄位與支援欄位不能互相取代。
03.06.Asynchronous Event Request 留下一筆等待事件的命令;完成資訊指出事件種類與要讀的 log,詳細資料仍在 Telemetry log 內。
| 一起判讀的欄位或標示 | 如何共同決定操作或結果 | 帶入情境後怎麼讀 |
|---|---|---|
| FID 0Bh.TLN bit 10/TCDA 0→1 | TLN 決定當 Controller-Initiated Data Available 由 0 變成 1 時是否傳送 Telemetry Log Changed 事件。 | 停用 TLN 是停用該通知,不能據此認定沒有 Telemetry 資料。 |
| AET/AEI/LID/EVNTSP | 事件類型、事件資訊與 LID 共同辨認通知;EVNTSP 的解讀取決於事件種類。 | 收到指向 LID 08h 的通知後,去讀 TCDA、TCDGN 與資料範圍,不把 AER 的完成項目當成完整 capture。 |
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.2.1, Figure 151, 文件頁 184-185, PDF 頁 210-211
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.2.1, Figure 152, 文件頁 185, PDF 頁 211
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.2.1, Figure 155, 文件頁 186-189, PDF 頁 212-215
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.6, Figure 474, 文件頁 466-468, PDF 頁 492-494
Base151-1AER 完成的 DW0 指出事件類型、事件資訊與相關 log。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.2.1, Figure 151, 文件頁 184-185, PDF 頁 210-211
Base151-2收到通知後,以 AET 分類、AEI 看具體事件,再用 LID 找後續資料;單看 LID 不足以知道發生什麼事。
Base152-1AER 的 DW1 提供事件專用的補充資訊。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.2.1, Figure 152, 文件頁 185, PDF 頁 211
Base152-2同一個 EVNTSP 數值在不同事件中不一定同義;先由 DW0 辨識事件,再按該事件解釋 DW1。
Base155-1Notice 類事件告知主機有狀態或配置變更。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.2.1, Figure 155, 文件頁 186-189, PDF 頁 212-215
Base155-2收到 Firmware Activation Starting 通知,表示切換流程開始;要確認目前韌體仍須讀對應狀態及 log,而非把通知當完成證明。
03.07.讀 log 先選 LID 與命令集,再解讀該 log 的 LSP/LSI;NUMD 決定本次量,LPO 決定本次起點,DPTR 決定主機接收位置。
| 一起判讀的欄位或標示 | 如何共同決定操作或結果 | 帶入情境後怎麼讀 |
|---|---|---|
| LID/CSI/LSP/LSI | LID 與 CSI 選紀錄種類,LSP、LSI 的含義由所選 log 定義。 | LSP 在 Boot 中可含 BPID,在 Telemetry 中有建立 capture 的控制位元,不能跨 log 照搬。 |
| NUMDU/NUMDL | 先合成 NUMD=(NUMDU<<16)|NUMDL,再計算 (NUMD+1)×4 bytes。 | 512 bytes 對應 NUMD=127;高低部分不能各自加 1。 |
| LPOU/LPOL/OT | 高低欄位組成 64-bit offset;OT 決定按 byte 位移或項目索引解讀。 | byte-offset 模式下,從 512-byte 表頭後開始讀資料要保留起點差異;index 模式不能直接使用同一個 byte 數。 |
| DPTR/RAE | DPTR 給接收記憶體,RAE 控制相關事件的保留行為。 | 分段讀取先準備每段 buffer,再在恰當時機確認事件,避免中途改變可取得的紀錄。 |
| LSUPP/LID Specific Parameter | Supported Log Pages 回報實際支援及 log 專屬能力。 | 規格列有某個 LID,不代表此裝置一定實作;先查支援再使用進階選項。 |
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13, Figure 203, 文件頁 213, PDF 頁 239
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13, Figure 204, 文件頁 213, PDF 頁 239
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13, Figure 205, 文件頁 214, PDF 頁 240
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13, Figure 206, 文件頁 214, PDF 頁 240
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13, Figure 207, 文件頁 214, PDF 頁 240
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13, Figure 208, 文件頁 214-215, PDF 頁 240-241
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13, Figure 209, 文件頁 215-216, PDF 頁 241-242
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.1, Figure 210, 文件頁 217, PDF 頁 243
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.1, Figure 211, 文件頁 217-218, PDF 頁 243-244
Base204-1Get Log Page 的 CDW10 選擇 log、低位長度及相關控制參數。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13, Figure 204, 文件頁 213, PDF 頁 239
Base204-2讀取 512 bytes 共 128 Dwords,長度原始值為 127;同時填正確 LID,才能知道回來的是哪一份紀錄。
Base210-1Supported Log Pages 列出裝置實際支援哪些紀錄。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.1, Figure 210, 文件頁 217, PDF 頁 243
Base210-2規格定義某個 LID,但裝置沒有支援時,不能把表中定義當成裝置能力;先查支援清單。
Base211-1每個 LID 的支援與效果描述子補上紀錄特性。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.1, Figure 211, 文件頁 217-218, PDF 頁 243-244
Base211-2LSUPP 表示是否支援,LID-specific parameter 另描述相應特性;不能只看一個 bit 就推論全部參數可用。
Base474-1Asynchronous Event Configuration 各 bit 選擇對應的通知類別。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.6, Figure 474, 文件頁 466-468, PDF 頁 492-494
Base474-2主機啟用本篇需要的通知時,只設定對應的事件 bit;一種通知已啟用,不會自動啟用其他通知。
Base203-1Get Log Page 的 DPTR 指向主機接收 log 資料的空間。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13, Figure 203, 文件頁 213, PDF 頁 239
Base203-2同樣是 512-byte buffer,LID 不同會得到不同結構;DPTR 只提供位置,不會決定 log 類型。
Base205-1CDW11 提供長度高位與 log 特定識別資訊。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13, Figure 205, 文件頁 214, PDF 頁 240
Base205-2NUMDU 非零時總長度需與 NUMDL 合併後再加 1;不能把兩個長度欄位各加 1 再相加。
Base206-1LPOL 是 log offset 的低 32 bits,單位還要看 offset 模式。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13, Figure 206, 文件頁 214, PDF 頁 240
Base206-2byte-offset 模式下讀下一段 512 bytes,LPOL 設 512;index-offset 模式則以項目索引解釋,數字 512 不再表示相同位置。
Base207-1LPOU 補齊較大 log offset 的高 32 bits。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13, Figure 207, 文件頁 214, PDF 頁 240
Base207-2完整 offset=00000001_00000000h 時,LPOU=1、LPOL=0;只讀 LPOL 會誤以為從開頭開始。
Base208-1CDW14 的 CSI、OT、UIDX 決定命令集、offset 模式與相關選擇。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13, Figure 208, 文件頁 214-215, PDF 頁 240-241
Base208-2相同 LPOL=4,在 byte-offset 與 index-offset 下表示不同事物;先看 OT 才能正確解讀位置。
Base209-1LID 清單把紀錄編號與其命令集、範圍連在一起。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13, Figure 209, 文件頁 215-216, PDF 頁 241-242
Base209-2先依本篇所需的紀錄選取清單中的對應列,再看 CSI 與作用範圍;編號只選紀錄種類,完整欄位排列仍到該 log 的結構表閱讀。
04.01.Area 2 包含 blocks 1 到 7,共 7×512=3584 bytes,已包含 Area 1 的 blocks 1 到 3。Header 是 block 0,另占 512 bytes;Last Block 是包含在範圍內的最後編號。
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.30; 5.2.13.1.8-5.2.13.1.9, 文件頁 232-237,733-737, PDF 頁 258-263,759-763
04.02.分段期間可能出現另一代 snapshot。重讀 generation 可確認資料是否仍屬同一代;若改變便須重收。Controller-initiated 資料還要檢查 TCDA,避免忽略其他讀取者已確認資料的情況。
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.30, 文件頁 734-735, PDF 頁 760-761
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.9, 文件頁 237, PDF 頁 263