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

3.3 KiB

EROFS Feature Status

This list describes behavior implemented and manually qualified in the FreeBSD 15 module. It is not a claim of complete Linux EROFS feature parity.

Filesystem and Metadata

  • Read-only mount/unmount and statfs.
  • Superblock CRC32C, declared image/media bounds, 48-bit block/root-NID decode.
  • Compact and extended inodes.
  • Correct compact non-directory I_NLINK_1 semantics and directory dot_omitted semantics.
  • Linux new_decode_dev major/minor decoding followed by FreeBSD makedev().
  • Superblock-seeded, inode-metadata-derived vnode/NFS generation synchronized with va_gen; metadata-identical payload replacement is outside the stale handle guarantee.
  • NFS export, 64-bit NID file handles, stale-generation and malformed-FID validation.

Data Layouts

  • FLAT_PLAIN and FLAT_INLINE reads.
  • Inline tails constrained to the inode metadata block and declared backing bounds.
  • Chunk-based files, chunk indexes, holes, device tables, explicit devices, and flatdev mapping.
  • LZ4, MicroLZMA, DEFLATE, and ZSTD compressed reads.
  • Full and compact indexes, partial references, HEAD2/interlaced records, ztailpacking, and fragment-backed compressed data used by qualified images.
  • Compressed va_bytes/st_blocks from the complete 48-bit on-disk compressed block count; plain, inline, and chunk files retain logical block rounding.

Vnode and Directory Operations

  • vget, root lookup, vfs_hash, namecache, and vn_vget_ino integration.
  • lookup, readdir, stable restart cookies, cold nested lookup, and Linux-compatible nonzero final-name padding.
  • Shared strict validation for dirent arrays, nameoff, block bounds, and illegal names.
  • getattr, access checks, readlink, pathconf, and read-only mutation rejection, including combined special-vnode setattr requests.
  • FreeBSD 15 vnode_pager_local_getpages and compatible async pager entry; VOP_BMAP remains explicitly unsupported.

Xattrs and ACLs

  • Inline and shared user.*, trusted.*, and security.* attributes.
  • Shared attributes in primary metadata and metabox containers.
  • Long-prefix and packed-prefix-table lookup.
  • FreeBSD user/system namespace exposure and POSIX access/default ACL reads.
  • Read-only xattr/ACL mutation behavior.

Documentation and Validation

  • erofs(5) manual page.
  • Markdown manual tests TC001-TC161, with unresolved cases tracked in issues/.
  • FreeBSD 15 manual reports with fixture hashes and cleanup evidence.
  • Final explicit-extent ordering, 48-bit allocation, special setattr, OFF_MAX directory-cookie, and build-tool failure checks.

Build Qualification

  • FreeBSD 15 amd64 is the only currently validated and accepted target; src/Makefile rejects other architectures.
  • ZSTD support is disabled by default (WITH_ZSTDIO=0). Opt-in builds use WITH_ZSTDIO=1 and require a kernel built with options ZSTDIO.

Not Implemented or Not Claimed

  • Writable filesystem operations.
  • A CI pipeline or automated kernel-test harness.
  • Positive mapped-payload execution of the explicit compressed-extent format; TC146 remains PARTIAL and the fixture limitation is tracked under issues/.
  • Blanket support for every future EROFS incompat feature or every dedupe encoding; only the explicitly qualified fragment/metabox forms are claimed.
  • Performance guarantees from the manual throughput observations.