test code v1
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user