Files
erofs-freebsd-out-tree/tests/results/manual/2026-08-09T0710Z-g1/manual-test-report.md
T
2026-08-18 09:20:44 +02:00

11 KiB

repo22 G1 Full Manual Regression Report

Execution window: 2026-08-09 06:30-07:10 UTC

Code baseline: cd0e985b5ac54a4b7acb7042422329ad1729fb3e

Guest: FreeBSD 15.0-RELEASE-p8 amd64, QEMU TCG, FreeBSD clang 19.1.7

Scope and Method

This run covers exactly these 32 test cases and no others:

TC001, TC007, TC009, TC011-TC014, TC019-TC040, TC147, TC150, TC151

Every test was executed directly from its Markdown procedure. No CI, runner, or wrapper supplied a result, and no historical run was accepted as current evidence. Each test used a fresh dynamically allocated md provider and was cleaned before the next test.

Set audit: requested 32, selected 32, unique 32, duplicate 0, missing 0, extra 0.

Exact Build

The source archive exported from the code baseline had SHA256 5b7fd2ac32ecf791f71c74849a6e8c1775e442d1be3c7852c654d074b2c8351b. The module was built natively in the guest with:

FREEBSD_SRC=/tmp/repo22-freebsd15-src WITH_ZSTDIO=0 ./build.sh

The build completed with kernel -Werror. The module had no unresolved bcmp or ZSTD_* symbols.

Item Value
Source commit cd0e985b5ac54a4b7acb7042422329ad1729fb3e
WITH_ZSTDIO 0
KLD SHA256 023ddf0ea2205977f5921715d2a6206b607806840180ddf470103fd1d6deba84
Loaded module KLD ID 20, size 0xb8a8, erofs.ko
Guest userland/kernel 15.0-RELEASE-p8 / 15.0-RELEASE-p8

The later documentation-only progress commit 573aaab7ee0b47cb6aed7f76c52c68dd4041326b did not alter src/; the KLD therefore remains an exact build of the stated code baseline.

Fixture Qualification

tests/prepare_g1_fixtures.sh generated deterministic sources and production erofs-utils 1.8.6 images. tests/g1_fixtures.py applied structured, field-checked transforms and recalculated checksums. Independent empty output directories repo22-g1-repro-c.6IK7SM and repo22-g1-repro-d.egVQgj produced byte-identical source manifests, metadata, image manifests, and structured evidence.

Manifest SHA256
SOURCE-SHA256SUMS 5ce53780f455208cb1efbf2738429a1f6f5c4eb3af1663779815c6afc0fea2bc
SOURCE-METADATA bd27480c238ffff441d328ab71775989611d057ffaed691dae0238f738371e46
images/IMAGE-SHA256SUMS 54fb256b3847acc8b1e735eacaace56c1747f65237ee5730b2b5fa3e3ab2b0f3
images/fixture-evidence.txt 84e8e2e595a88e034ea0a05777207d4e3430e4e764a7fbc4d4a4770defcca3db
Image SHA256
compact-dot-omitted.erofs bbd1d3d9f619a71ed7a874feb8c437aa9bf3e86f671abfa243a85de57e809d54
compact-nlink1.erofs c9ecfc29fbd45a2c37c6422d689ac340943dbc23ee4428ffd4698ef88e0b331d
compact.erofs 41004ed19d58e698f277cb268b570b87203c2ba08ea4a68a72f6e3b1c7aec47a
extended-large-hole.erofs 7a69d791742096ddfece20c7a793d828ec7e887352d0b62f22839f66ecb26a6d
extended-size-bit63.erofs 9413a4197f5b2c43876e257690a5f96e82f61b2b62084e2df688144070f0825b
extended.erofs 3d96fd292749f1ef7ae72f8e370fc8a94231ed575fb36a6d66784a59d8c4ffa7
fallback-48bit-root2.erofs 8217da2ae664358e12d357524ef0bb52a897f1ed206b2353c2a2033b76d4ae79
flat.erofs 3785ca07e7bd16f6c611191596ae0314253c0ae9b7217a4b22de25799b0f08ac
inline-cross-block.erofs 354b674fd144cab93403d47ad95135968c24d41b34a8c908aa6717882243e936
inline-zero.erofs c894f249ca6d4a7a16c7eb728687c6aba1f948630c4f72e20680655c0fca70c0
inline.erofs 1474c310a80766666c1d578174ca03972fb9e03dff8c2357a37883151d4acc47
invalid-dirent-nid.erofs 309d6829ebc87c22ae6ba23f07ae0b00a62c7e657c3cc2ec46fe6a64d24eea69
root8-48bit.erofs 2f48797586395ff7d2204d43e67d6e2aaaa04c9bdfb162c5c5e2c24dc6e88893

The corrected dot-omitted directory has size 35 and on-disk names ..,child.txt. Its encoding was independently checked with erofs-utils 1.9.3, including a passing fsck.erofs; erofs-utils 1.8.6 does not recognize the 48-bit incompat feature and was not used to claim support for that image.

Per-Test Results

Test Result Actual command summary and observable evidence Cleanup
TC001 PASS mdconfig, mount -t erofs -o ro, cmp, sha256, statfs_probe; root source/mount SHA 04690aad...3105, blocks 17, files 15, readonly 1. mount 0, md 0
TC007 PASS Two fresh providers and concurrent mounts; both waits returned 0, and source/mount1/mount2 testfile SHA was 0e5303ad...e3b1. mounts 0, md units 0
TC009 PASS statfs_probe, df -kT, df -iT; bsize 4096, blocks 17, free 0, files 15, ffree 0, 68 KiB used, readonly 1. mount 0, md 0
TC011 PASS stat, complete top-level name comparison, root payload cmp; root inode 36, directory mode 0755, nlink 4, root SHA 04690aad...3105. mount 0, md 0
TC012 PASS getfh, fhstat, fhopen, repeated handle comparison; fsid 00000063:000000e0, NID 71, generation 2262931519, data SHA 0e5303ad...e3b1. mount 0, md 0, outputs 0
TC013 PASS Patched dirent NID 59 to 3200 with valid CRC; two read_probe expect-error calls returned errno 97 and truss showed fstatat ERR#97; dmesg 123->123. mount 0, md 0, outputs 0
TC014 PASS Structured superblock inspect plus mount/statfs; magic 0xe0f5e1e2, block bits 12, root NID 36, blocks 17, inodes 15, dmesg 123->123. mount 0, md 0
TC019 PASS Mounted actual feature=0x80 rootnid_8b=36 blocks_hi=0 image; root inode 36, blocks 17, root SHA 04690aad...3105. mount 0, md 0
TC020 PASS stat, cmp, sha256 on compact small.txt; NID 65, size 22, nlink 1, blocks 8, SHA 6e0d152a.... mount 0, md 0
TC021 PASS Field evidence i_format=0x14 i_nb=0x1234; mounted NID 63 reported nlink 1 and source-exact SHA ff151c.... mount 0, md 0
TC022 PASS Structured raw rdev 0x543abc21; native special-node probe reported char/block major 2748, minor 344865, while FIFO rdev was NODEV. mount 0, md 0
TC023 PASS Extended inode NID 45, 64-byte inode, size 2097883; stat, full cmp, SHA eed000b0... all matched source. mount 0, md 0
TC024 PASS Size 4294971393 sparse fixture; three 65536-byte reads at offsets 0, 2147483648, and 4294905857 matched deterministic zero source SHA de2f2560.... mount 0, md 0, outputs 0
TC025 PASS Baseline and patched mounts checked single NID 63/nlink 1, hard-a and hard-b NID 57/nlink 2, and dotdir NID 53/nlink 2; all source comparisons passed. mounts 0, md units 0
TC026 PASS Valid bit-4 fixture evidence: size 35, on-disk ..,child.txt, root8 36; listing synthesized ., retained .., and child SHA matched de256820...41f0. mount 0, md 0
TC027 PASS Host dump.erofs --ls --path=/dotdir showed explicit .,..,child.txt; guest listing and child cmp matched SHA de256820...41f0. mount 0, md 0
TC028 PASS flat.erofs layout 0 small file; size 25, blocks 8, source/mount SHA bb9c1e27...f486. mount 0, md 0
TC029 PASS Full medium-file cmp SHA 471108a5...12e6; pread offset 40960 length 20480 matched independent range SHA 72142972...5fb. mount 0, md 0, output 0
TC030 PASS 10485791-byte full dd/cmp SHA 0b39b8a4...c56e; 1 MiB read at 5 MiB matched SHA c26bb16b...ba5c. mount 0, md 0, outputs 0
TC031 PASS Inline tiny.txt evidence layout 2; size 12, blocks 8, source/mount SHA 863f7088...73f38. mount 0, md 0
TC032 PASS Explicit layout-2 zero-length inode; size 0, blocks 0, EOF clean, both hashes e3b0c442...b855. mount 0, md 0
TC033 PASS 5000-byte tailpacked file full SHA e4c7fbec...b2a6; 64-byte range crossing offset 4096 matched SHA 6ff6b010...c0e. mount 0, md 0, outputs 0
TC034 PASS Evidence layouts for 4095/4096/4097 were 0/0/2; full SHAs 5255d8c8..., 677802c8..., eda39df0...; nine-byte boundary range SHA 9e67b4e5...182c. mount 0, md 0, outputs 0
TC035 PASS Sequential 4096-byte dd to exact EOF at size 262163; source/output SHA 056f8f75...3433. mount 0, md 0, output 0
TC036 PASS Independent pread start/mid/end ranges returned 10240/10240/24576 bytes at exact offsets; SHAs 5b6a742e...d858, 29fa7799...849, 6477f5a2...163d. mount 0, md 0, outputs 0
TC037 PASS 104857857-byte full dd took 61.44 s and matched SHA 1c8daa29...c661; 5 MiB sample at 50 MiB matched SHA f1b60e95...25c7. mount 0, md 0, outputs 0
TC038 PASS readlink returned exact target.txt; followed target source/mount SHA 887f519c...8ea3. mount 0, md 0, outputs 0
TC039 PASS Evidence size 73/layout 2; source and mounted long targets matched, output was 74 bytes including newline, followed file SHA 06539545...0f42. mount 0, md 0, outputs 0
TC040 PASS Source/mounted target was /nonexistent/repo22-g1-target; two follow attempts returned exact errno 2 at open. mount 0, md 0, outputs 0
TC147 PASS Positive inline file SHA 0347f272...b01; checksum-valid cross-block image returned errno 97 twice and truss fstatat ERR#97; dmesg 123->123. mounts 0, md units 0, outputs 0
TC150 PASS Current-KLD rerun with feature=0x80 rootnid_2b=36 rootnid_8b=0 blocks_lo=17; root inode 36, root SHA 04690aad...3105, statfs blocks 17. mount 0, md 0
TC151 PASS Current-KLD rerun: two direct opens returned errno 97, truss showed fstatat ERR#97, both mmap helpers exited 1 at open with integrity failure; dmesg 123->123. mount 0, md 0, outputs 0

Outcome

Result Count
PASS 32
KERNEL-FAIL 0
SHELVED/ISSUE 0
ENVIRONMENT-UNAVAILABLE 0

No G1 issue file was created. Existing issue files concern other groups or previously documented limitations and were not changed by this run.

Discarded Attempts

  • TC013 initially asserted a nonportable stat(1) wrapper exit status. The qualified run used two direct syscall probes and truss errno instead.
  • TC026 first exposed an invalid transformer assumption: a NUL had been added after non-trailing ... That image was discarded, the transformer was fixed, independent 1.9.3 validation and two-build reproduction passed, and TC026 was rerun with the corrected image.
  • TC037's first long-running remote stream did not preserve its final output. It was not counted; the complete qualified rerun retained elapsed time, both hashes, and cleanup evidence.
  • TC151 had two pre-mount/post-evidence command assertions with incorrect grep keys. Neither was counted; the complete qualified rerun used syscall errno and per-output integrity counts.

Final Cleanup

Before final unload, kldstat showed ID 20 and the exact KLD SHA256 above. After kldunload erofs, the guest reported:

erofs_mounts=0 md_units=0 kld_present=0

Generated fixtures, build objects, and native probes remain only in /work/build and guest /tmp; none is staged for the repository.