test code v1
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# 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:
|
||||
|
||||
```sh
|
||||
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:
|
||||
|
||||
```sh
|
||||
./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.
|
||||
Reference in New Issue
Block a user