Files
erofs-freebsd-out-tree/current/report-2/2026-08-09-overall-progress.md
T
2026-08-13 10:44:59 +02:00

7.5 KiB
Raw Blame History

repo22 第二次总体进度报告

更新时间:2026-08-09 UTC

权威统计快照:381349b3847209a67d669264ac54a50a3599915c (该提交是当次 xdm/main 上完成 G3 报告后的快照)。

本报告只统计该快照已经提交的实现、正式批次和动态证据。TC060 源码修复与 G5 压缩回归正在并行进行,但在形成完整报告并提交前不提前计为 PASS,也不改变下述 冻结统计。

总体结论

  • feature 实现、源码 code review、style review、FreeBSD 15 API 对齐和双配置构建 布局已经完成阶段性收口。
  • 正式八组回归中,G1、G2、G3、G4 共执行 103 项:102 PASS1 项 TC060 KERNEL-FAIL 正在修复。
  • final review-fix 阶段还直接动态执行了 TC154-TC156,三项均 PASS。它们是三项 额外且不与前述 103 项重叠的 TC,因此当前共有 106 个不同 TC 具备动态结果, 其中 105 PASS、1 项待修。
  • TC154-TC156 已分配给 G8,但先行 PASS 不能重复计入“已完成 G8”,也不能把 G8 标成已执行完毕。G8 尚有 TC111、TC131-TC133 未执行。
  • TC010 与 TC153 已通过真实大 sparse provider 的 FreeBSD 内核路径验证并转为 RESOLVED。explicit extent 的 mapped compressed payload 正向 fixture 仍未获得, 对应 issue 尚未解决。

实现与审查

repo22 已完成以下阶段性工程工作:

  • 实现并审查 superblock、compact/extended inode、plain/inline/chunk 数据、目录与 namecache、xattr/ACL/metabox、多算法压缩、fragment、multi-device、NFS export、 vnode pager 和 fail-closed 元数据边界。
  • 对照 Linux EROFS 的磁盘 ABI、职责拆分和命名以降低长期维护偏差,同时保持 FreeBSD vnode、GEOM、pager、NFS、ACL 和 dev_t 语义为行为权威。
  • 完成 overflow、长度、偏移、移位、signed/unsigned、目录大索引、48-bit union、 NFS generation、special vnode 和 timestamp 等多轮独立 code review 修复。
  • 清理被跟踪的构建产物,统一 FreeBSD KLD 源文件布局、amd64 门控和 WITH_ZSTDIO=0/1 构建方式;当前构建仍以 kernel -Werror 为门槛。
  • 删除会替代人工判定或无条件给出 PASS 的旧 CI 风格 runner/wrapper,保留可复现 fixture transformer 与原生 syscall/probe 工具。当前任务不实现 CI。

正式八组状态

八组精确集合总计 156 项,彼此无重复、无遗漏。

精确集合 数量 快照状态
G1 TC001, TC007, TC009, TC011-TC014, TC019-TC040, TC147, TC150, TC151 32 32 PASS,正式批次完成。
G2 TC002, TC008, TC010, TC015-TC018, TC112-TC116, TC119 13 13 PASS,正式批次完成。
G3 TC041-TC066, TC141, TC148, TC149, TC152, TC153 31 31 已执行;30 PASSTC060 KERNEL-FAIL。
G4 TC005, TC067-TC083, TC117, TC134-TC140, TC142 27 27 PASS,正式批次完成。
G5 TC003, TC004, TC084-TC092, TC102-TC110, TC143-TC146 24 压缩回归正在进行,尚无正式整组结论。
G6 TC006, TC093-TC101, TC118 11 尚未执行。
G7 TC120-TC130 11 尚未执行。
G8 TC111, TC131-TC133, TC154-TC156 7 正式整组未完成;TC154-TC156 已先行 PASSTC111、TC131-TC133 尚未执行。

正式批次证据:

统计口径

正式批次已执行数为 32 + 13 + 31 + 27 = 103PASS 数为 32 + 13 + 30 + 27 = 102,另有 TC060 一项 KERNEL-FAIL。

TC154-TC156 来自 review-fix 阶段的 exact-source FreeBSD 动态运行,并未包含在 G1-G4 的 103 项中。因此按“不同 TC 是否已有动态结果”计数,应增加三项,得到 106 个 TC 有动态结果、105 PASS、1 待修。按“正式组是否完成”计数时,三项仍属于 尚未完成的 G8,不能再次增加 PASS 数或宣称 G8 已完成。

大 Provider 验证

  • TC010 使用逻辑长度 17592193667072 字节的 qualified sparse vnode provider 动态挂载了 blocks_hi=1 的 48-bit EROFS,并验证 df 的 64-bit 总量无截断。 issue 已 RESOLVED。
  • TC153 使用逻辑长度 8796093091840 字节的 sparse GEOM provider,令超大 FLAT_PLAIN 目录进入 2147483648 最终块索引的真实 kernel lookup 路径;固定 KLD 在 cold lookup 和 readdir 后均返回 EINTEGRITY,没有错误缓存为 ENOENT。 issue 已 RESOLVED。
  • explicit extent 已动态覆盖 hole record、header 选择和部分负向分支,但仍缺少 mapped compressed payload 以及完整 record variant 的正向读取证据,不能关闭 issue。

Issue 索引

Issue 当前状态 结论
TC060 standard pathconf OPEN - KERNEL-FAIL _PC_NO_TRUNC_PC_CHOWN_RESTRICTED 返回 EINVAL;源码修复和复测正在进行。
TC010 48-bit statfs RESOLVED - qualified sparse vnode provider validated qualified 16 TiB 级 sparse provider 已完成真实 mount/statfs/df 验证。
TC153 large directory index RESOLVED - exact-source kernel validation passed qualified 多 TiB sparse provider 已完成 exact-source 大索引 kernel lookup 验证。
Explicit extent fixture SHELVED - positive fixture unavailable issue 未解决;尚无使用 explicit-record parser 的 mapped compressed payload 正向 fixture。

当前风险

  • TC060 是已确认的 FreeBSD kernel behavior failure,修复必须保持 NAME_MAX、PATH_MAX、 FILESIZEBITS、LINK_MAX、ACL 查询和未知键 errno 不回归,并完成 mount/md/KLD 清理。
  • G5 同时覆盖 LZ4、MicroLZMA、DEFLATE、ZSTD、ztailpacking、partial reference、 explicit metadata 等多条压缩路径,fixture 资格和 WITH_ZSTDIO 配置差异仍是当前 最大执行风险。
  • explicit extent 缺少上游工具可生成的 mapped positive fixture;静态 ABI 对照、 hole record 和 malformed case 不能替代真实压缩 payload 读取。
  • G6 multi-device、G7 边界与压力类测试、G8 NFS/manual 页面仍需隔离 VM、精确 KLD、 direct syscall/数据比较和完整清理,历史 feature 报告不能自动升级为本轮结果。
  • 并行 worktree 共享 xdm/main。每次 push 前必须 fetch/rebase,严格 pathspec,禁止 force pushguest mount、md、KLD 和临时 provider 残留必须清零。

下一步

  1. 完成 TC060 根因修复,重跑全部 pathconf 键与基础 mount/read smoke,更新 issue 和 dated manual report。
  2. 完成 G5 的 24 项压缩回归,提交 exact KLD、fixture hash、errno/数据比较与清理 证据。
  3. 依次完成 G6 11 项、G7 11 项和 G8 剩余 TC111、TC131-TC133;在 G8 汇总中引用 或按要求复跑 TC154-TC156,但禁止重复计数。
  4. 聚合 TEST-COVERAGE-MATRIX,审计 156 项总数、组间重复、遗漏、动态证据来源和 未解决 issue。
  5. 完成最终独立 source review,检查 lock/resource/error path;执行 WITH_ZSTDIO=0/1 双配置 exact-source build,并做 xdm/main、remote/HEAD、 tracked clean 和 guest 清理的最终 audit。