update
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
# 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
|
||||
metadata;metadata-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 | TC146;HEAD2/interlaced PASS,explicit 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`。
|
||||
Reference in New Issue
Block a user