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

8.9 KiB

repo22 G7 boundary and stress full manual regression report

Scope and result

  • Exact scope: TC120-TC130 inclusive.
  • Count check: 11 requested, 11 executed, 0 duplicate, 0 omitted.
  • Result: PASS 11, KFAIL 0, SHELVED 0, ENV 0.
  • No repo22 kernel source was changed.
  • No kernel failure occurred, so no G7 issue file was opened.
  • No CI, runner, or test wrapper was used. Each test's Markdown commands were issued manually in the dedicated FreeBSD guest.

Baseline and source identity

  • Requested initial xdm/main: c566d8ac6bf8e801082bbccf108451f6ee46ad40.
  • G6 pushed first; G7 fetched and rebased onto f11fff5b8e8050e1017ed86f0bcf71042b2b45aa before editing.
  • Exact build commit: e44e24c2d7e4955498fb42b06bcf376d6c452190.
  • The equivalent G7 test/source commit after the final remote rebase is 896683f14af2ba36705498f85d0d8af02b513d31; its repo22 source tree is byte-identical to the build input.
  • Exact repo-community/repo22/src tree: 34a56a583b3b43e7e103b26a30dea1d400c2bc6c.
  • G8 later advanced xdm/main to 6f336d0a7; its repo22 source tree was the same 34a56a58.... G7 rebased before final push without force.
  • Build configuration: WITH_ZSTDIO=1.
  • Tracked FreeBSD sys source: REVISION="15.0", BRANCH="RELEASE-p9".
  • repo22 source archive SHA256: e715e9d323be1448e0395add99cf017dea3c1bbb6579915cf3d07f7265ca2891.
  • FreeBSD sys archive SHA256: 71f535ab5a9ef686c6adbe123a1d1e65fd9bfa9cd19724f9fcef222a8efbe9d8.

Isolated environment

  • Worktree: /work/build/repo22-manual-g7-20260809T125507Z.
  • Branch: manual-g7-20260809T125507Z.
  • Artifact root: /work/build/repo22-g7-20260809T125507Z.
  • Dedicated qcow2 overlay backed by /work/build/vm-freebsd-dev-base.qcow2.
  • Dedicated SSH forward: 127.0.0.1:9227.
  • QEMU: TCG multi-thread, qemu64, 6144 MiB RAM, 4 vCPUs, virtio disk/network.
  • Guest: FreeBSD 15.0-RELEASE-p8, amd64, releng/15.0-n281036-53054229dcb3, OSREL 1500068.
  • Guest kernel SHA256: b9abf7b58f9dd4d87f14d2fbc306cf255e6eadc47b8ae885a230f65e28be4562.
  • Host erofs-utils: 1.8.6.
  • RACCT/RCTL was initially present but disabled. The dedicated overlay set loader tunable kern.racct.enable="1", rebooted, then reported enabled with an empty initial rule set.

Exact KLD and probe

The KLD built successfully from the archived commit with the tracked p9 sys tree and loaded by full pathname. kldstat -v assigned file ID 5 and showed module ID 507 for erofs.

Artifact SHA256
/root/repo22-g7/erofs.ko 06dfa530efb2d494950672d60453d86a6e70f06ca2ce7b4eff3396ca8018c76d
/root/repo22-g7/g7_probe a0bca6ea596cec6063bc058aebee12929a1814e6d343283ffbe051551bf75c57

The KLD was an amd64 FreeBSD relocatable object with build ID d4fff529ae8e4c5395e1e867fd4ea5d57a9570b6. The expected formal FreeBSD ZSTD undefined symbols were present; no build or load error occurred.

Reproducible fixture

Two fresh generations produced byte-identical source inventories, source checksum lists, and image checksum lists. Each generation independently ran the helper verification and erofs fsck checks.

source file count                 = 24023
image count                       = 2
SOURCE-INVENTORY.tsv SHA256       = b9be1745900a8cf6755068b6a78b93bc294cf8857539159b7771e5170bc1b9ed
SOURCE-SHA256SUMS SHA256          = 445929465a3031e84de9887fc5b02d72cb797df7ca512ea1cc874d11f77747d3
SHA256SUMS SHA256                 = f9cf45c1e3fe814290d9cd0b96d066509309cc3f764c545d5e7d7ddae4a9eac3
fixture-manifest.json SHA256      = 0ba86269962b00329b99177494cfb099c0f58fe5de77d2dc1f12da684dedf09d
guest image/source verification   = 2 images and 24023 sources, all OK
Image Bytes SHA256
boundaries.erofs 37752832 ff7e804dc309039fa5dfa9b6e75416d16224137c8f6d6d96bf04cfa0ba8a1a8c
workloads.erofs 155111424 5f21a045114c5956b80752736c9833fe6a975a296cd28324734c9b9e423f3984

The sparse source was exactly 4294971393 bytes. It occupied 48 Linux 512-byte blocks before transfer and 512 FreeBSD blocks with a reported 32768-byte file-system block size after sparse-aware extraction. All five markers and six boundary ranges passed the helper's source self-check.

Per-TC results

TC Manual evidence Result
TC120 Exact size 0; source/mount empty SHA256 e3b0c442...; read returned 0; SET/END seeks returned 0 PASS
TC121 Exact 4294971393-byte size; six source-compared ranges across block, hole, 2 GiB, 4 GiB, and EOF boundaries; EOF read 0 PASS
TC122 Exactly 128 levels; deepest source/mount hash ef151b18...; full cmp and exact pwd -P PASS
TC123 Exact 255-byte name; one exact readdir row; size 4096; source/mount hash 0724316b... PASS
TC124 Exactly 12000 one-KiB files and exact names; complete source/target hash-list digest be93ef11... PASS
TC125 Exactly 12000 direct entries and exact names/hashes; five boundary lookups matched; readdir timing recorded PASS
TC126 Exactly 16 saved PIDs, 16 waits, all rc 0; every expected/actual full-file hash matched; no PID remained PASS
TC127 Three RCTL-capped allocators reached ENOMEM, released all touched bytes, recovered allocation, and wait=0; pressure read hash/cmp matched PASS
TC128 268435456-byte source/mount hash and full cmp matched; three complete sequential reads rc 0; metrics recording-only PASS
TC129 Three deterministic 16384-operation runs, all source-compared, zero mismatch, identical digest; metrics recording-only PASS
TC130 Seven saved PIDs and seven wait=0 results; sequential, hash, two random, 16-file, names, and stat workloads all matched; full cleanup PASS

TC121 range digests were 7775e9e82783e06f, c86358c1fb3fabf7, b43a063055adc383, a1bd19f7b12c60b2, 5a378d4efc494af4, and 1873eaea77354aa6, in manifest order.

TC124's complete 12000-row source and mounted hash-list files both had SHA256 be93ef11d2e4cd0cd42ef057397b89978b624e42674f9181e5dd151b30636171. TC125's complete 12000-row files both had SHA256 8cde4ea887f9b21b265ac199bcbb447a656aa6d718a36424f4fa03a6c538ebe7.

TC126 persisted each worker's PID, source hash, mounted hash, and wait status. The PID table SHA256 was fc67656d...; the 16-row wait table SHA256 was 888f026d.... Every wait code was 0 and every hash pair was equal.

Pressure evidence

TC127 used three synchronized g7_probe processes and valid FreeBSD RCTL rules process:<pid>:vmemoryuse:deny=640M. The first process utilization sample showed memoryuse=532M and vmemoryuse=636M.

Worker Allocated before ENOMEM errno Released Recovery wait rc
1 553648128 12 553648128 ok 0
2 545259520 12 545259520 ok 0
3 553648128 12 553648128 ok 0

Free memory recorded by vmstat -H was about 4.01 GB before, 2.35 GB while the allocations were held, and 3.89 GB after release. The 96 MiB source and mounted file both hashed to e4baaad480721bfb69a0315f0092fcf1ad75426fda0b9242a750b5685ad75152 and full cmp exited 0. RCTL rules and synchronization files were removed.

Recording-only metrics

TC125's full 12000-entry sorted readdir scan under TCG recorded real 11.48, user 0.81, and sys 9.76 seconds. It would have failed the old invalid 10-second fixed threshold despite complete correctness, so timing was correctly treated as recording-only.

TC128 sequential reads:

Run Bytes Seconds Bytes/s wait rc
1 268435456 6.764841 39680970 0
2 268435456 9.207558 29153816 0
3 268435456 10.603392 25315998 0

TC129 used seed 0x6a09e667f3bcc909, 16384 operations, and 4096-byte blocks. All runs produced digest 908bc2905f48695d and zero mismatches.

Run Seconds IOPS Mean us
1 2.236047 7327.22 136.48
2 1.062087 15426.24 64.82
3 1.026698 15957.95 62.66

TC130 random workers ran concurrently with the other five workloads. Seed 0xbb67ae8584caa73b recorded 442.73 IOPS, 2258.72 us mean, digest 78e9d2c7f86ed20e; seed 0x3c6ef372fe94f82b recorded 455.91 IOPS, 2193.42 us mean, digest ee76a5d094a0c6f2. Both had zero mismatches. The exact names files shared SHA256 8d1cf816...; exact stat files shared SHA256 ca8937b1....

Stability and cleanup

  • Final dmesg delta was empty; its SHA256 was the empty-file hash. No panic, trap, assertion, watchdog, OOM, or EROFS error appeared.
  • Every test detached its exact md provider after unmounting.
  • Final guest state had zero EROFS mounts, md providers, G7 child processes, RCTL rules, synchronization files, and Python bytecode caches.
  • KLD file ID 5 was unloaded with kldunload -i 5; no EROFS allocator row or KLD remained.
  • The guest remained responsive, powered off normally, QEMU PID 344535 exited, port 9227 was released, and the dedicated overlay/log/PID files were deleted.
  • Compressed evidence archive SHA256: f18246076e5ff93309187a1826afe9f2dfa4a0bcdf7a958419d2890d05727ccd.
  • No issues were created because all correctness gates passed.