Files
erofs-freebsd-out-tree/tests/TC121-maximum-file-size.md
T
2026-08-13 10:44:59 +02:00

2.2 KiB

Test Case: Sparse 64-bit File Boundary

Test ID: TC121-maximum-file-size
Category: Boundary & Stress
Priority: High
Regression: None

Objective

Verify a reproducible sparse file across 2 GiB and 4 GiB offset boundaries, including exact 64-bit size, hole bytes, marker bytes, and EOF behavior.

Preconditions

  • Complete G7-MANUAL-SETUP.md and its fixture self-check.
  • The source is exactly 4294971393 bytes and consumes less than 1 MiB of host blocks; this is a practical sparse boundary, not a fabricated 16 TiB run.

Manual Steps

G7=/root/repo22-g7
FIX=$G7/fixtures
SRC=$FIX/sources/boundaries/maximum/sparse-boundary.bin
IMAGE=$FIX/images/boundaries.erofs
MNT=/mnt/repo22-g7-tc121
E=$G7/evidence/TC121
mkdir -p "$MNT" "$E"
stat -f 'source_size=%z source_blocks=%b blocksize=%k' "$SRC" \
  | tee "$E/source-stat.txt"
test "$(stat -f %z "$SRC")" -eq 4294971393
test "$(stat -f %b "$SRC")" -lt 2048
unit=$(mdconfig -a -t vnode -f "$IMAGE")
mount -t erofs -o ro "/dev/$unit" "$MNT"
TARGET=$MNT/maximum/sparse-boundary.bin
stat -f 'target_size=%z target_blocks=%b blocksize=%k' "$TARGET" \
  | tee "$E/target-stat.txt"
test "$(stat -f %z "$TARGET")" -eq 4294971393
: > "$E/ranges.txt"
while IFS="$(printf '\t')" read -r label offset length; do
  "$G7/g7_probe" range "$SRC" "$TARGET" "$offset" "$length" \
    > "$E/range-$label.txt"
  rc=$?
  printf 'label=%s rc=%s\n' "$label" "$rc" | tee -a "$E/ranges.txt"
  cat "$E/range-$label.txt" | tee -a "$E/ranges.txt"
  test "$rc" -eq 0 || exit 1
done < "$FIX/SPARSE-RANGES.tsv"
"$G7/g7_probe" eof "$TARGET" 4294971393 | tee "$E/eof.txt"
umount "$MNT"
mdconfig -d -u "${unit#md}"
test -z "$(mount -p | awk -v m="$MNT" '$2 == m { print }')"
test -z "$(mdconfig -l | tr ' ' '\n' | grep -x "$unit")"

PASS Gate

  • Source and mounted sizes are exactly 4294971393.
  • Every listed range exits 0 with mismatches=0; the list covers a pure hole, block edge, 2 GiB edge, 4 GiB edge, and final 64 bytes.
  • A read at exact EOF returns 0 bytes with errno 0.
  • The guest remains responsive and cleanup removes the exact mount/provider.

A range mismatch, overflow errno, panic, trap, or hang is KFAIL. Do not change kernel source during this regression group.