1、EXT4/JBD2/DAXByteLog:ext4 DAX Fast Commit 的的byte-granular persist pathByteLog保留 Fast Commit的核心语义,把 payload persist path 实现为更适合 DAX/pmem的形式。Full Commitjournal blocksFast CommitTLV deltaByteLogDAX payload pathLi ChenMarch 2026BACKGROUNDfull commit01BYTELOG TALKext4/JBD2/DAX3 full commitext4 的 baseline
2、 durability 建在 JBD2 journal 上关系关系JBD2 full commit ext4 fast commit ByteLog for DAX/pmem -把当前 transaction 的所有相关 metadata 都完整提交 -需要时先处理相关 data writeback -写入完整的 descriptor block/metadata buffer/commit/revoke block -提交完成后,事务才算 durable(atomic)BYTELOG TALKext4/JBD2/DAX4JBD2 full commit 的的 transaction life
3、cycle1 1handles修改 metadata2 2j_running_transaction累积 credits3 3请求 commit锁住更新4 4metadata block写入 journal5 5commit record变成 durable6 6checkpoint推进 j_tailfull commit 记录的是一整个记录的是一整个 transaction 的的 journal image,commit 完成后再由完成后再由 checkpoint 把把 home location 慢慢推进慢慢推进。BYTELOG TALKext4/JBD25JBD2 descriptor/
4、metadata/commit recordWRITE ORDERdescriptor blockblock tag tablemeta 1journal copymeta 2journal copymeta 3journal copycommit recordTID/checksum/commit boundarydescriptor block 它描述本 transaction 里有哪些 journaled metadata block。每个 tag 会把 journal copy 关联回原始 home blocknr。recovery 据此知道这些 journal copy 应该落回哪里
5、。commit record只有当 commit record durable 之后,transaction 才算 committed。如果 crash 发生在它之前,这批 journal copy 不能被当成已提交状态。顺序上可以把它理解成:descriptor block 先描述,journaled metadata block 承载拷贝,commit record 决定这笔 transaction 是否真正生效。BYTELOG TALKext4/JBD26checkpoint 如何把如何把 committed transaction 变成变成 home mitted in journal
6、journal 里已经有完整 committed transaction2.checkpoint writebackmetadata 从 journal copy回写到 home block3.advance j_tailcheckpoint 完成后对应 journal 空间可重用crash 发生在发生在 checkpoint 之前之前home block 可能还是旧内容。recovery 需要重新从 committed journal transaction 恢复。checkpoint 完成并推进完成并推进 j_tail 之后之后home block 已经是新状态。journal 中这部分旧