Files
erofs-freebsd-out-tree/docs/pre2-baseline.md
T
2026-08-18 09:20:44 +02:00

2.7 KiB

repo-pre-2 Maintenance Baseline

Snapshot Identity

repo-pre-2 was created from the tracked repo-pre-1 tree without copying working-tree-only files or build artifacts.

planning baseline commit:  ed47f1b5583a229e372f488b9492d1f6234aae98
snapshot creation parent:  109fe74d3fcef107db5869be1d030f4f12d1cfa6
snapshot creation commit:  73fa57924b549387400eeeb85354bbbbe770a962
repo-pre-1 source tree:    6a5a1a49d4a4e08f6ef1155de240500e63a15365
repo-pre-2 snapshot tree:  6a5a1a49d4a4e08f6ef1155de240500e63a15365
Linux comparison tree:    b79b9a8b62f633e887a8b99075ff9412fabd7f83

The matching source and snapshot tree IDs establish byte-for-byte content, file-mode, and path equivalence at snapshot creation. repo-pre-1 and src-linux are read-only references for pre2 work.

Phase Scope

Pre2 phase 1 is L0 mechanical maintenance alignment. It permits only the separately reviewed changes listed below:

  1. Remove stale Linux-only declaration fragments from src/xattr.h while preserving every active FreeBSD interface.
  2. Remove six specified, unreferenced private constants from src/erofs_defs.h.
  3. Rename the private checksum helper in src/super.c without changing its signature, body, call position, or behavior.

Each source change must remain an independent commit. This phase does not add features, fix behavior, move responsibilities between files, reorder data structures, alter ABI, or broadly reformat code.

Required FreeBSD Differences

Linux and FreeBSD EROFS remain independent implementations. The following platform boundaries are intentional and must not be replaced merely to make the source look more similar:

  • FreeBSD VFS, vnode, mount, namecache, pager, and NFS export interfaces.
  • FreeBSD buffer/cache, GEOM provider, device I/O, locking, and allocation APIs.
  • FreeBSD xattr, ACL, errno, kernel-module, and bsd.kmod.mk conventions.
  • FreeBSD build gates, including the current amd64 restriction and optional ZSTDIO integration.

Linux naming and layout should be followed only when doing so preserves these native contracts and makes cross-repository review easier.

Excluded Work

This phase does not address vnode ownership after insmntque() failure, large-run allocation and uiomove() limits, compact pblk validation, 48-bit boundaries, decompressor descriptors, backend ABI, typed errno, xattr parsing, ACL behavior, file splitting, build-system alignment, CI, or test tooling.

Validation Status

Only static snapshot and Git allowlist checks were performed for the initialization commits. No build, QEMU run, test script, smoke test, mount, or runtime feature check was performed. All runtime capabilities therefore remain NOT RUN for repo-pre-2 until a later, explicitly authorized validation phase.