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
f11fff5b8e8050e1017ed86f0bcf71042b2b45aabefore 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/srctree:34a56a583b3b43e7e103b26a30dea1d400c2bc6c. - G8 later advanced
xdm/mainto6f336d0a7; its repo22 source tree was the same34a56a58.... 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, OSREL1500068. - 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.