# 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.