1.3 KiB
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
ENOENTor stale-vnode errors; no next-block read, panic, dmesg error, or cleanup residue occurs.