This commit is contained in:
2026-08-18 09:20:44 +02:00
commit b826cd721a
522 changed files with 93730 additions and 0 deletions
+79
View File
@@ -0,0 +1,79 @@
# Test Case: LZ4 ztailpacking Edge Cases
**Test ID**: TC092-ztailpacking-edge
**G5 fixture contract**: Use [G5-MANUAL-SETUP.md](G5-MANUAL-SETUP.md).
Its generated paths, source comparisons, structured corruption offsets, and
cleanup rules supersede placeholder examples in this file.
**Category**: Compression
**Priority**: Medium
**Regression**: None
## Objective
Verify correct handling of edge cases in ztailpacking (compressed tail packing) feature.
## Preconditions
- Generated image: `images/lz4-ztail.erofs`
- Test files:
- `/exact-pcluster.dat` (4096-byte non-tail control)
- `/one-byte-tail.dat` (4097-byte logical boundary case)
- `/max-tail.dat` (8191-byte logical boundary case)
- `/zero-tail.dat` (empty-file control)
- `/inline.dat` is independently proven by the manifest to have
`Z_EROFS_ADVISE_INLINE_PCLUSTER` and nonzero `h_idata_size`. The four edge
controls must not be described as ztailpacked unless their own map headers
prove it.
- Mount point: `/mnt/test`
## Test Steps
1. Mount the image:
```
mount -t erofs /dev/md0 /mnt/test
```
2. Read file with exact pcluster size (no tail):
```
cat /mnt/test/files/exact-pcluster.dat > /tmp/out1
sha256sum /tmp/out1
```
3. Read file with minimal tail (1 byte):
```
cat /mnt/test/files/one-byte-tail.dat > /tmp/out2
tail -c 1 /tmp/out2 | od -A n -t x1
```
4. Read file with maximum tail size:
```
cat /mnt/test/files/max-tail.dat > /tmp/out3
stat -f %z /tmp/out3
```
5. Read file with zero-length tail:
```
cat /mnt/test/files/zero-tail.dat > /tmp/out4
```
## Expected Results
- Step 2: File without tail read correctly
- Steps 2-5: Every exact logical size, full SHA256, and byte comparison matches
its source file
## Verification Method
- Verify all tail size edge cases handled
- Confirm boundary conditions don't cause errors
- Test tail packing storage limits enforced correctly
- Verify data integrity for all edge cases
## Cleanup
```
umount /mnt/test
mdconfig -d -u "${unit#md}"
rm /tmp/out*
```
## Notes
- Tail size limits depend on inline storage capacity
- Zero-length tail is valid edge case
- Exact pcluster alignment means no tail needed
- Related tests: TC091 (basic ztailpacking)