2.0 KiB
2.0 KiB
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-p8amd64。 - 构建源:FreeBSD
15.0 RELEASE-p9sys树。 WITH_ZSTDIO=0构建通过,模块 SHA256:d11d0319dc1d786eaa868a0c05c2abaf43da8480acacb0e1e4b72b7542b05432; 无ZSTD_*未解析符号。WITH_ZSTDIO=1构建通过,模块 SHA256:82471f19812e9877ea06901d1ba0cb4378b2bc6476ec70f6e024e0dc777c0c71; 编译命令包含-DZSTDIO并引用 FreeBSD 内核 ZSTD API。- 启用模块完成加载、
zstd-level1.erofs只读挂载、6 个文件读取与 SHA256、 卸载、md detach 和 KLD unload;测试后无遗留挂载或模块。