160 lines
11 KiB
Markdown
160 lines
11 KiB
Markdown
# 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:
|
|
|
|
```text
|
|
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:
|
|
|
|
```text
|
|
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.
|