Files
erofs-freebsd-out-tree/docs/refactoring-status.md
T
2026-08-13 10:44:59 +02:00

2.0 KiB
Raw Blame History

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.cdeflate.czstd.c 已按 Linux 职责名调整为 decompressor_lzma.cdecompressor_deflate.cdecompressor_zstd.c
  • 解压后端原型已移入 internal.hMicroLZMA 内嵌 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 验证

  • VMFreeBSD 15.0-RELEASE-p8 amd64。
  • 构建源:FreeBSD 15.0 RELEASE-p9 sys 树。
  • WITH_ZSTDIO=0 构建通过,模块 SHA256 d11d0319dc1d786eaa868a0c05c2abaf43da8480acacb0e1e4b72b7542b05432ZSTD_* 未解析符号。
  • WITH_ZSTDIO=1 构建通过,模块 SHA256 82471f19812e9877ea06901d1ba0cb4378b2bc6476ec70f6e024e0dc777c0c71 编译命令包含 -DZSTDIO 并引用 FreeBSD 内核 ZSTD API。
  • 启用模块完成加载、zstd-level1.erofs 只读挂载、6 个文件读取与 SHA256、 卸载、md detach 和 KLD unload;测试后无遗留挂载或模块。