# 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 PASS,1 项 `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 PASS,TC060 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 已先行 PASS,TC111、TC131-TC133 尚未执行。 | 正式批次证据: - [G1 报告](../../tests/results/manual/2026-08-09T0710Z-g1/manual-test-report.md) - [G2 报告](../../tests/results/manual/2026-08-09T0710Z-g2/manual-test-report.md) - [G3 报告](../../tests/results/manual/2026-08-09T1059Z-g3/manual-test-report.md) - [G4 报告](../../tests/results/manual/2026-08-09T0839Z-g4/manual-test-report.md) - [review-fix 报告](../../tests/results/manual/2026-08-09T0557Z-review-fixes/manual-test-report.md) ## 统计口径 正式批次已执行数为 `32 + 13 + 31 + 27 = 103`;PASS 数为 `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](../../issues/TC060-pathconf-standard-values.md) | OPEN - KERNEL-FAIL | `_PC_NO_TRUNC` 与 `_PC_CHOWN_RESTRICTED` 返回 `EINVAL`;源码修复和复测正在进行。 | | [TC010 48-bit statfs](../../issues/TC010-48bit-statfs-large-provider.md) | RESOLVED - qualified sparse vnode provider validated | qualified 16 TiB 级 sparse provider 已完成真实 mount/statfs/df 验证。 | | [TC153 large directory index](../../issues/TC153-large-directory-block-index-validation.md) | RESOLVED - exact-source kernel validation passed | qualified 多 TiB sparse provider 已完成 exact-source 大索引 kernel lookup 验证。 | | [Explicit extent fixture](../../issues/extent-metadata-fixture-unavailable.md) | 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 push;guest 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。