Files
erofs-freebsd-out-tree/tests/results/manual/2026-08-09T1059Z-g3/manual-test-report.md
T
2026-08-13 10:44:59 +02:00

10 KiB

repo22 G3 Full Manual Regression Report

Execution window: 2026-08-09 10:42-10:59 UTC

Exact source baseline: 9ae22009f23a65320730072a780998e80aa9b728

Guest: FreeBSD 15.0-RELEASE-p8 amd64, QEMU TCG, port 9222

Scope and Method

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

TC041-TC066, TC141, TC148, TC149, TC152, TC153

Every test was executed directly from its numbered Markdown procedure with a fresh dynamic md provider. No CI, runner, result wrapper, historical PASS, or unassigned TC supplied a result.

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

Exact Build

The source archive was exported with git archive from the exact baseline. Its SHA256 was:

c7f36610a523427dc406023e1c27fc87a03076bbde2e6b1406311fa5ddb06b0f

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 KLD loaded as ID 20, size 0xb8a8, and remained the only loaded EROFS module for the test interval.

Item SHA256
erofs.ko 19ad086bd2508cbb4c57b1a51f38c93057d438b84fbcfa2e637ff2519f5bc590
readdir_probe 2387964fd0c153f9cba0e41dd57fbdc1d48c2f2b779540f27387fb168cd35128
g3_vfs_probe 08fe3999600dd1826805c00a17af3d893d247a593c0812f767d85a2633302068
stat_special 1c9b4e8fea449d2fc7b985c468a0267448db5998dd413c6c4ed36a1ab0c78ea4
nfs_fh_tool db704f67d718d04b84ed32b5cdbecb93a99c5fe3b4ab238d603a10e005d790e3
mmap_fault ba32712f9a4a01f4d85d8f5f6fafe2741acbd6b185a85fa759da73dbc416233c
sparse_hole_probe e5e1d8750fb671f0fccafdf51b61f4b0e73837718906dbd5fd5e8ab01cc790aa

The KLD unresolved-symbol list contained both vnode_pager_local_getpages and vnode_pager_local_getpages_async; both resolved at load.

Fixture Qualification

tests/prepare_g3_fixtures.sh completed its structured assertions and all four checksum-manifest checks. The relevant image hashes are:

Alias Image SHA256
P vfs-plain.erofs 79f0b5f4aa8e7ea532b711ee8fb466f14f35d0952446d41ba4bbc4d6e008b8ff
Z vfs-lz4.erofs 07e2d1fbda0e6dc1233e6943a20f85e1f6652b580632c4c8264641a9a8805743
N namei-base.erofs d1730ff23836797c6c09e1b39b1cf23efc16e27f85ab07fdcab577bb82871659
Pad namei-padding-nonzero.erofs 9a94e9af2cab264b9c11975a20d78e615d6fe1e6f86267173cb5ac86aecb2b17
Cshort namei-corrupt-short.erofs fb89f74795a5569ed3a85d63836dd75a06e1f17823d0508048c37da710ea6e75
Coff namei-corrupt-nameoff.erofs b0b70ee615f163430f04edb91ab76c27ee8cc9a75b8ebb2008834f5b550e3933
Cname namei-corrupt-name.erofs 6a980ad3e241603eda2ef71a470c82975291c614366a401e4e89c17c9adf9b91
SC special-compact.erofs fd78256dd83d9d6d957e5f843c7a8e8a175a4b3243d528bebd299b0226853237
SE special-extended.erofs e73e9b84d9ceb8c2b07e9c2732733b0fd607736c68c09522a2402fbeef6ba8d5
H extent-hole-5g.erofs 50014a24493918247e36511ad34a2fe8ab47ae09ea46d7fd62a1bed445a6c65f
L large-dir-intmax.erofs 0f90d3d57adbbbd946e41b225c1f6c464915c6abb0b13478ec9b2a318def1f72
LS TC153 sparse prefix f9337f83b1f568f6d904331a7749e6362a691055cd5af95b59bc89772f04e3b0

The wide directory has 320 real files. The structured padding mutation records wide NID 42, directory block 6, 80 dirents in the patched block, final-name offset 4043, and the eight changed bytes at offsets 4084:4092.

The 5 GiB fixture records size 5368713216 and one 16-byte extent with plen=0. TC153 records extended FLAT_PLAIN/Layout 0, NID 40, start block 16, 2147483649 directory blocks, and final block index 2147483648.

Per-Test Results

Every cleanup cell means the literal umount and mdconfig detach commands returned zero; a following mount -t erofs and mdconfig -l produced no rows.

Test Result Actual command, errno/behavior, and hash evidence Cleanup
TC041 PASS readdir_probe testdir 512; errno 0; 36 entries/restarts, types 8 dir/24 reg/4 link, FNV a3b969b5aa90cdbe, exact 34-name manifest and 255-byte name; image P. umount 0; md 0
TC042 PASS readdir_probe wide 128 plus three stat calls; errno 0; 322 entries/restarts, 320 files, FNV f3bfa2c15b231a59, sample NIDs 72/390/710; image N. umount 0; md 0
TC043 PASS four g3_vfs_probe stat calls, cmp, sha256; errno 0; regular/dir/link metadata stable and mounted file matched source; image P. umount 0; md 0
TC044 PASS direct stat probes; missing/missing-parent errno 2, positive errno 0; image P. umount 0; md 0
TC045 PASS stat four case variants plus direct miss; NIDs 101/88/86/87, unmatched spelling errno 2; image P. umount 0; md 0
TC046 PASS readdir_probe testdir 4096 and exact manifest cmp; errno 0; 36 entries/restarts, FNV a3b969b5aa90cdbe; image P. umount 0; md 0
TC047 PASS readdir_probe wide 128, sorted count/duplicate checks; errno 0; 322 entries/restarts and 320 unique files; image N. umount 0; md 0
TC048 PASS readdir_probe wide 128; every kernel d_off reopened/lseeked, every libc cookie seeked on its producing DIR stream; 322/322 restarts, FNV f3bfa2c15b231a59; image N. umount 0; md 0
TC049 PASS readdir_probe plus two dot stat calls and cmp; errno 0; dot and directory both NID 44, source-exact path; image P. umount 0; md 0
TC050 PASS readdir_probe child plus parent/dotdot stat and cmp; errno 0; parent NID stable and multiple dotdot path source-exact; image P. umount 0; md 0
TC051 PASS repeated stat and cmp; errno 0; byte-identical NID/mode/size/generation and data; behavior-level only; image P. umount 0; md 0
TC052 PASS repeated negative stat then positive stat; errno 2/2/0; no positive poisoning; behavior-level only; image P. umount 0; md 0
TC053 PASS repeated stat, getfh, compare, describe; errno 0; NID 101, gen 3444757833, identical handle SHA 5000984ddaeca26d90e8fd59568a55afcb074f51aaa00eed8d422d698a4aefc6; image P. umount 0; md 0
TC054 PASS parent and two dotdot stat calls; errno 0; identical NID/generation/type, no lock diagnostic; behavior-level only; image P. umount 0; md 0
TC055 PASS g3_vfs_probe stat, native stat, sha256 on plain/LZ4; errno 0; size 21211, blocks 48/8, data SHA d09ed1cee6520e36e54d5f2fd8c3bc74bd46cd8a58426744cc301b638c83e9d4; images P/Z. two umount 0; md 0
TC056 PASS stat_special char/block/fifo plus stat on compact/extended images; errno 0; rdev 2748:344865, FIFO NODEV, size/blocks 0; images SC/SE. two umount 0; md 0
TC057 PASS nobody direct access-read, access-exec directory/file, open-read; errno 0 for all; image P. umount 0; md 0
TC058 PASS nobody direct access probes; restricted read/read/exec errno 13, regular-file write access errno 30; image P. umount 0; md 0
TC059 PASS four readlink probes, cmp, broken follow; target lengths 8/16/14/119 and FNV hashes recorded, follow errno 0/2; image P. umount 0; md 0
TC060 KERNEL-FAIL g3_vfs_probe pathconf; values 255/1024/64/2147483647, but NO_TRUNC and CHOWN_RESTRICTED each errno 22; probe status 1; image P; issue TC060-pathconf-standard-values.md. umount 0; md 0
TC061 PASS direct chmod probe and before/after stat cmp; errno 30, metadata unchanged; image P. umount 0; md 0
TC062 PASS direct chown probe and before/after stat cmp; errno 30, metadata unchanged; image P. umount 0; md 0
TC063 PASS direct O_RDWR/truncate/create probes plus before/after sha256; errno 30/30/30, hash unchanged and no new entry; image P. umount 0; md 0
TC064 PASS nm -u plus mmap_fault on plain/LZ4; helper errno assertions passed; size 21211, six faults, FNV a1890a1c216724be, EOF/SIGBUS/COW PASS; images P/Z. two umount 0; md 0
TC065 PASS real mmap_fault on plain/LZ4; MAP_SHARED EACCES and O_RDWR EROFS asserted, same FNV a1890a1c216724be; images P/Z. two umount 0; md 0
TC066 PASS exact source erofs_bmap EOPNOTSUPP audit, KLD symbols, real mmap fallback on plain/LZ4; both FNV a1890a1c216724be, no strategy diagnostic; images P/Z. two umount 0; md 0
TC141 PASS fresh open-read/cmp, two ENOENT lookups, 322-cookie probe on N/Pad; two lookup and readdir attempts on Cshort/Coff/Cname all errno 97; all five hashes above. five umount 0; md 0
TC148 PASS actual Pad image cmp/count/readdir_probe; errno 0; 320 files, 322 restarts, FNV f3bfa2c15b231a59; hash Pad and patch offsets recorded. umount 0; md 0
TC149 PASS real mmap_fault on plain/LZ4; same size/fault/FNV/EOF/SIGBUS/COW evidence as TC064 with fresh mounts; images P/Z. two umount 0; md 0
TC152 PASS stat, vmstat -m, two timed sparse_hole_probe calls at 3221225472; errno 0, pread/mmap zero, 0.02 s each, RSS 2652/2656 KiB, erofs memory 768 bytes; image H. umount 0; md 0
TC153 PASS 8796093091840-byte sparse provider, diskinfo, stat, two cold and one post-readdir lookup; /huge size 8796093026304, all lookup errno 97, root 3-cookie FNV cd20cb6ae9fe01ba; prefix LS/KLD hashes. umount 0; md 0; sparse file removed

Outcome

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

The only new open issue is issues/TC060-pathconf-standard-values.md. The former TC153 validation issue is resolved by the qualified sparse-provider run.

Discarded Attempts

  • The first TC041 helper run passed telldir cookies across a closed and newly opened DIR stream. POSIX only guarantees a cookie on its producing stream. The helper was corrected and rebuilt with -Werror; this run was not counted.
  • TC041 was then attempted with a 128-byte getdirentries buffer, too small for the fixture's 255-byte name record. The 512-byte qualified rerun passed.
  • TC047 was first attempted with a 64-byte buffer, too small for its long records. The 128-byte qualified rerun still forced repeated reads and passed.

No discarded command was counted as a kernel result.

Dmesg and Final Cleanup

The dmesg baseline had 123 lines. The only eight new lines were expected mmap_fault child exits on SIGBUS: two images for each of TC064, TC065, TC066, and TC149. There was no new EROFS warning, integrity diagnostic, assertion, trap, panic, OOM, dirty writeback, or "No strategy for buffer" line.

Before unload, the exact KLD hash was rechecked. KLD unload returned zero. The guest then reported:

erofs_mounts=0 md_units=0 kld_present=0 guest_artifacts=0

The TC153 sparse provider and all transferred/generated guest files were removed.