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

125 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# repo22 第三次总体进度报告
更新时间:2026-08-09 UTC
权威验证快照:`12351cbb0a593474f4fcef68ffc5218d9c99dd46`
最终源码基线:`fcc85b93d5f8fd9671686bd68bf3b086c8bd25cf`
## 总体结论
本轮要求的 feature 全面验证、FreeBSD/Linux 行为差异审查、code review 和
style/可维护性优化已经完成。161 个可执行 Markdown 测试均已执行并形成受控
手工证据,最终为 160 PASS、1 PARTIAL、0 FAIL、0 KERNEL-FAIL、0 ENV。
唯一未完全关闭的是 TC146 的 explicit compressed extent mapped-payload 正向
fixture。该问题已按用户授权详细记录并搁置,不是已观察到的 kernel failure
也不影响其他 160 个 TC 的结论。本轮目标因此完成,剩余工作属于已批准搁置项
或后续可选增强。
CI 和自动化 kernel-test harness 不在本轮范围内,未实现也未宣称完成。
## 已完成内容
- 完成 TC001-TC161 的规格、执行报告和覆盖矩阵机械审计;TC000 只作为模板。
- G1-G8 的 156 个表格行覆盖 TC001-TC156,恰好一次,无重复、无遗漏。
- 完成 TC157-TC161 独立回归,覆盖 explicit extent 全局顺序、48-bit compressed
block count、special vnode 组合 setattr、dot-omitted `OFF_MAX` cookie 和 `nm`
失败传播。
- TC010 的 16 TiB-plus statfs、TC060 的 FreeBSD pathconf、TC153 的超大目录索引
均已动态验证并转为 RESOLVED。
- 完成 superblock、inode、data、directory/namecache、xattr/ACL/metabox、压缩、
multi-device、NFS、pager、错误路径和边界算术的多轮独立 review。
- 保留 Linux EROFS 的磁盘 ABI、命名、函数顺序和职责拆分作为维护参照,同时以
FreeBSD vnode、GEOM、pager、NFS、ACL、`dev_t` 和 errno 语义为行为权威。
- 修正 README 的 NFS stale 承诺:generation 来自 superblock seed 和 inode
metadatametadata-identical payload-only replacement 不保证 `ESTALE`
- 清理 repo22 内全部 ignored build/object/image/repro/Python bytecode 产物;最终
guest 的 EROFS mount、md、EROFS KLD 和 DTrace KLD 计数均为零。
## 最终验证统计
| 状态 | 数量 | 说明 |
| --- | ---: | --- |
| PASS | 160 | 具备对应 dated manual report 的 FreeBSD 15 手工证据 |
| PARTIAL | 1 | TC146HEAD2/interlaced PASSexplicit mapped payload 未完成 |
| FAIL / KERNEL-FAIL | 0 | 无开放 kernel 行为失败 |
| ENV | 0 | 无环境阻塞 |
| SHELVED test case | 0 | TC146 的子项不另计为 TC |
G1-G8 证据来自多个源码提交,不能表述为所有旧 TC 都运行在最终 KLD 上。最终
`fcc85b93d` 基线接受了 TC157-TC161、相关回归以及双配置 build/load/mount smoke。
## 最终构建
FreeBSD 15 kernel `-Werror` 双配置均成功:
| 配置 | KLD SHA256 |
| --- | --- |
| `WITH_ZSTDIO=0` | `15fda9d334132cd81769ce4dff4f8411a6e2b4cf7531c352530d0de85f42a2d2` |
| `WITH_ZSTDIO=1` | `23782dc0ce7da188807d35020bf2d8c6044b796c5c9a8746b398ba784cd6ad4e` |
TC161 的私有 `nm` shim 正确使构建失败且不发布新 KLD;移除 shim 后使用
`/usr/bin/nm` 的正常重建 exit 0。两个最终 KLD 均完成独立加载和只读挂载 smoke。
## Code Review 结论
最终独立复核未发现 P0/P1。已修复的最后一批问题包括:
- 16/32-byte explicit extent table 全局严格顺序验证;
- extended compressed inode 的完整 48-bit `blocks_hi` 解码;
- special vnode size 与其他 setattr 字段组合时的 false success
- dot-omitted 目录在 `OFF_MAX` 的 cookie/offset overflow
- `build.sh``nm` 自身失败的可靠传播;
- NFS generation 文档与真实实现边界不一致。
从社区第三方维护者视角,未发现仍需消除的非必要 Linux/FreeBSD 结构、命名或
职责差异。保留的差异均来自 FreeBSD kernel API、锁、provider、pager、NFS 或
权限模型要求。
## 未完成与搁置
唯一批准搁置项是
[explicit mapped extent payload](../../issues/extent-metadata-fixture-unavailable.md)
- erofs-utils 1.8.6 不能生成或独立验证该新格式;
- 已尝试工具能力扫描、`--max-extent-bytes`、structured conversion、ABI/control
flow 对照以及多类负向 fixture
- TC157 已证明 16/32-byte unordered table fail closed,但不能替代 mapped payload
的 source-identical 正向读取;
- 首个非零 `lstart` 和极大 extent-count 性能边界也保留为可选覆盖风险。
## 后续执行计划
1. 等待可生成并独立验证 explicit mapped-payload 的上游工具或可信 fixture。
2. 获得 fixture 后补充 4/8/16/32-byte 正向 record、partial reference、high words、
binary-search transition 和 final fragment 动态覆盖,使 TC146 从 PARTIAL 转 PASS。
3. 如后续项目另行启动 CI,再基于现有 Markdown 断言设计自动化;不得把当前手工
PASS 记录直接转换成无条件自动 PASS。
4. 后续源码变更继续执行受影响 TC、双配置 build、module smoke、scoped Git hygiene
和独立 review,不要求无差别重跑与改动无关的全部历史环境。
## 相关提交
正式八组手工验证:
- G1 `9ae22009f23a65320730072a780998e80aa9b728`
- G2 `aed7b68b79a5bd4115913f8361821c86fd58d2e2`
- G3 `381349b3847209a67d669264ac54a50a3599915c`
- G4 `f383bbbbff301a6bde18894f03ab88a8c0cc885a`
- G5 `c566d8ac6bf8e801082bbccf108451f6ee46ad40`
- G6 `f11fff5b8e8050e1017ed86f0bcf71042b2b45aa`
- G7 `f3ab2096fea3942317deb83fa051c84d3c124ec2`
- G8 `6f336d0a7387c8f110b19abad6e96f3ea17dba2e`
最终源码与验证收口:
- `f27b524a35b1c960be7e81884f9b928d9ac907e9`metadata boundary 修复。
- `67d3c057fbcad5adc765ab9927da511e3221ac8f`explicit extent header 解码修复。
- `fcc85b93d5f8fd9671686bd68bf3b086c8bd25cf`TC157-TC161 规格与 helper。
- `12351cbb0a593474f4fcef68ffc5218d9c99dd46`:最终手工报告、覆盖、issue 和 README 汇总。
逐项证据见
`tests/results/manual/2026-08-09T1804Z-final-review-independent/manual-test-report.md`
最终统计口径见 `docs/TEST_REPORT.md``tests/TEST-COVERAGE-MATRIX.md`