# 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. ```text 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::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.