test code v1

This commit is contained in:
2026-08-13 10:44:59 +02:00
commit f3b1165f19
301 changed files with 37885 additions and 0 deletions
+77
View File
@@ -0,0 +1,77 @@
# 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.