Files
erofs-freebsd-out-tree/tests/TC147-flat-inline-block-bounds.md
T
2026-08-18 09:20:44 +02:00

1.3 KiB

Test Case: FLAT_INLINE Metadata-Block Bounds

Test ID: TC147-flat-inline-block-bounds

Objective

Verify a valid inline payload reads exactly and a checksum-valid inline range crossing its inode metadata block fails repeatedly with EINTEGRITY.

Fixture

Use images/inline.erofs, images/inline-cross-block.erofs, and source/inline/inline.txt. Evidence records the NID/inode offset, patched i_xattr_icount, inline start at block offset 4068, 31-byte size, valid CRC, and both image/source hashes.

Procedure

Mount inline.erofs on a fresh md unit:

stat -f 'size=%z blocks=%b' "$mnt/inline.txt"
cmp /tmp/repo22-g1/source/inline/inline.txt "$mnt/inline.txt"
sha256 /tmp/repo22-g1/source/inline/inline.txt "$mnt/inline.txt"

Clean it up, then mount inline-cross-block.erofs without listing the root:

./read_probe expect-error "$mnt/inline.txt" 97
./read_probe expect-error "$mnt/inline.txt" 97
set +e
truss -o /tmp/tc147.truss stat "$mnt/inline.txt"
rc=$?
set -e
printf 'stat_rc=%d\n' "$rc"
tail -20 /tmp/tc147.truss

Record dmesg delta and clean the second mount/provider.

Expected Results

  • Positive data matches source and reports 8 sectors.
  • Every corrupt lookup/open returns errno 97, never ENOENT or stale-vnode errors; no next-block read, panic, dmesg error, or cleanup residue occurs.