# repo22 Linux/FreeBSD 结构对齐状态 ## 已完成 - 使用 `/work/dev-src-linux/fs/erofs` 的 Linux 7.1-rc1 快照逐文件复核;未使用 两个实现共享历史的假设。 - `namei.c` 的静态 helper 已从 `erofs_find_target_dirent` 恢复为 Linux 名称 `find_target_dirent`。 - `lzma.c`、`deflate.c`、`zstd.c` 已按 Linux 职责名调整为 `decompressor_lzma.c`、`decompressor_deflate.c`、 `decompressor_zstd.c`。 - 解压后端原型已移入 `internal.h`;MicroLZMA 内嵌 XZ 的 allocator helper 已限制为编译单元内部符号。 - `src/Makefile` 已按 Linux 的 metadata、压缩调度/映射、算法后端顺序组织, 并成为 `build.sh` 的唯一源码和模块名来源。 - 受跟踪的对象目录、vnode 生成头和 amd64/x86 机器 symlink 已删除并忽略。 ## 保留差异 - `erofs_vnops.c` 承载 FreeBSD vnode、pager、NFS 和只读操作语义。 - `lz4.c` 保持独立,因为 BSD 后端不使用 Linux page/LZ4 调度接口。 - 后端函数保持 BSD 内部 API,而不是复制 Linux decompressor descriptor 和 page 生命周期。 - FreeBSD 路径返回正 errno,并保留 GEOM/provider、lockmgr 和 vnode 规则。 - Linux `sysfs`、file-backed、fscache、page-cache sharing 和 `zutil` 职责不以 空文件模拟。 - 当前构建门控仅允许已验证的 FreeBSD 15 `amd64`。 ## 2026-08-09 验证 - VM:FreeBSD `15.0-RELEASE-p8` amd64。 - 构建源:FreeBSD `15.0 RELEASE-p9` `sys` 树。 - `WITH_ZSTDIO=0` 构建通过,模块 SHA256: `d11d0319dc1d786eaa868a0c05c2abaf43da8480acacb0e1e4b72b7542b05432`; 无 `ZSTD_*` 未解析符号。 - `WITH_ZSTDIO=1` 构建通过,模块 SHA256: `82471f19812e9877ea06901d1ba0cb4378b2bc6476ec70f6e024e0dc777c0c71`; 编译命令包含 `-DZSTDIO` 并引用 FreeBSD 内核 ZSTD API。 - 启用模块完成加载、`zstd-level1.erofs` 只读挂载、6 个文件读取与 SHA256、 卸载、md detach 和 KLD unload;测试后无遗留挂载或模块。