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

124 lines
7.5 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
权威统计快照:`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 尚未执行。 |
正式批次证据:
- [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 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。