update
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
# Pre9 decoded extent cache final manual validation
|
||||
|
||||
Date: 2026-08-13
|
||||
|
||||
## Scope
|
||||
|
||||
This run validated the mount-scoped decoded LZMA extent cache at enclosing
|
||||
repository commit `cdcf276d12169a672d2de42996532a470ac061d9`.
|
||||
|
||||
Controlled identities:
|
||||
|
||||
- `repo-pre-9` tree: `9d7eaf63a1c5d07320af3ef39930fc0a3530dd11`
|
||||
- `repo-pre-9/src` tree: `e657e8a63b097b061670f75ca01947a568ef33d5`
|
||||
- guest-built KLD SHA-256:
|
||||
`473a6205f43905972f2417609d43f67ab2cb51ea79bc1716fffa5c1914ff85af`
|
||||
- LZMA image SHA-256:
|
||||
`32107a084b27362a093768b88746c37c2e99a74b9f1301a9d4046988479defe9`
|
||||
- LZMA source SHA-256:
|
||||
`ddda39737f0f6093e828a032ec161511fefbb1fa361bc6cbffdbc91e48e4c461`
|
||||
|
||||
The existing fresh QEMU process on host port 10030 was reused. No second VM
|
||||
was created. The guest used FreeBSD 15.0-RELEASE-p8 under QEMU TCG with 6 GiB
|
||||
RAM and four virtual CPUs. The KLD was built in the guest with
|
||||
`make WITH_ZSTDIO=0`.
|
||||
|
||||
The VM used the existing base image
|
||||
`/work/tests-dev/lfs/freebsd-15-dev-src-20260811.bp`. Its previously audited
|
||||
SHA-256 is
|
||||
`67f359621f23a1d745f0889370cbb99a096cee3e99a0b2f3bb18fc7a91bf6fef`.
|
||||
This run relied on that established integrity record and did not repeat the
|
||||
approximately 16 GiB image hash, so base-image hashing did not block the final
|
||||
validation.
|
||||
|
||||
## Verdict
|
||||
|
||||
| Area | Verdict | Result |
|
||||
| --- | --- | --- |
|
||||
| Guest build, KLD load and fixture mounts | PASS | Build returned zero, `kldload` returned zero and both LZMA and LZ4 images mounted read-only. |
|
||||
| LZMA single-read correctness | PASS | 4 KiB, 16 KiB, 64 KiB and 1 MiB single `pread()` calls returned the requested bytes with `errno=0`; every output range matched the source range SHA-256. |
|
||||
| LZMA full-file correctness | PASS | Cold and warm full SHA-256 runs returned zero and matched the 8 MiB source hash. |
|
||||
| LZMA liveness and performance | PASS | Cold full SHA completed in 2.16 seconds and warm full SHA in 1.44 seconds, both below the 120-second host hard limit. |
|
||||
| LZMA concurrency | PASS | Two simultaneous full SHA processes both returned zero and the expected hash; guest real times were 22.52 and 21.97 seconds. |
|
||||
| Non-LZMA regression | PASS | The 8 MiB LZ4 fixture returned the expected SHA-256 in 9.03 seconds. |
|
||||
| Cleanup and guard integrity | PASS | Test QEMU PID 812999 exited, port 10030 closed, its overlay was deleted, and guard PID 26318/port 9222 remained alive and reachable. |
|
||||
|
||||
Overall verdict: **PASS for the required final manual smoke scope**.
|
||||
|
||||
## Single `pread()` evidence
|
||||
|
||||
Each probe program performs one target-file `pread()`. Truss confirmed one
|
||||
target call at offset zero for every requested length. Dynamic-loader reads are
|
||||
not counted.
|
||||
|
||||
| Length | Returned | Probe command wall time | Output/source range hash | Verdict |
|
||||
| ---: | ---: | ---: | --- | --- |
|
||||
| 4 KiB | 4 KiB | 2.696 s | `1c3c59331a4849514667bbc51c078327577b98f75a62996bbc2fe310b014dd79` | PASS |
|
||||
| 16 KiB | 16 KiB | 2.140 s | `2433ce7c2ea151f487a319447ce4fe14e1a2c2af9f0e5113fe47fc74b6138eee` | PASS |
|
||||
| 64 KiB | 64 KiB | 1.369 s | `2bb87afd3b9fab420cbe55b782d69a7342150e8816a35efacf22d2ab3012815d` | PASS |
|
||||
| 1 MiB | 1 MiB | 3.838 s | `52e806509e5dfeb523904f167fca765d001ea749351ecf51738e61a5352a1ba3` | PASS |
|
||||
|
||||
These wall times include SSH and truss overhead and are not pure kernel read
|
||||
times.
|
||||
|
||||
## Full-file SHA evidence
|
||||
|
||||
The 8 MiB LZMA source hash is:
|
||||
|
||||
`ddda39737f0f6093e828a032ec161511fefbb1fa361bc6cbffdbc91e48e4c461`
|
||||
|
||||
| Run | Exit | Guest real time | Captured hash | Verdict |
|
||||
| --- | ---: | ---: | --- | --- |
|
||||
| Cold, fresh mount | 0 | 2.16 s | expected hash | PASS |
|
||||
| Warm, same mount | 0 | 1.44 s | expected hash | PASS |
|
||||
| Concurrent process 1 | 0 | 22.52 s | expected hash | PASS |
|
||||
| Concurrent process 2 | 0 | 21.97 s | expected hash | PASS |
|
||||
|
||||
The concurrency result shows substantial contention compared with a single
|
||||
reader, but it completed correctly and stayed well inside the 120-second hard
|
||||
limit. This run does not claim concurrency performance is optimized.
|
||||
|
||||
## Baseline comparison
|
||||
|
||||
The preceding controlled Pre7/Pre8/Pre9 run sampled each full SHA after about
|
||||
eight seconds. Each process was still inside the LZMA decompression path and
|
||||
had advanced only about 1.0-1.25 MiB; no final hash was captured. That report
|
||||
therefore classified full-read liveness as failed and correctness as blocked.
|
||||
|
||||
With the mount-scoped decoded extent cache, the same 8 MiB fixture completed
|
||||
with the correct hash in 2.16 seconds cold and 1.44 seconds warm. This closes
|
||||
the previous full-file correctness block for this fixture and demonstrates a
|
||||
material liveness improvement. It does not establish a precise speedup ratio,
|
||||
because the baseline process was terminated at the observation point rather
|
||||
than allowed to finish.
|
||||
|
||||
## Non-LZMA result
|
||||
|
||||
The LZ4 compact-64k image contained `compressed.bin` with expected SHA-256:
|
||||
|
||||
`3ff012b76087c4da65ce0b69813a76f47ea367e95782edf8b8cd6cd3ec4d1880`
|
||||
|
||||
The mounted file produced the same hash, returned zero and completed in 9.03
|
||||
seconds of guest real time.
|
||||
|
||||
## Kernel and cleanup observations
|
||||
|
||||
No EROFS panic, assertion, mount error or decompression error was found in the
|
||||
captured dmesg tail. The image emitted pre-existing root-filesystem directory
|
||||
warnings during boot; they occurred before the test KLD was loaded and are not
|
||||
attributed to EROFS.
|
||||
|
||||
All test-specific mounts and md providers were explicitly detached before VM
|
||||
shutdown. A final generic cleanup command contained an awk quoting error, but
|
||||
it ran only after the explicit LZMA and LZ4 unmount/md detach operations had
|
||||
already returned zero. Host-side cleanup independently confirmed:
|
||||
|
||||
- PID 812999 absent;
|
||||
- port 10030 closed;
|
||||
- test overlay absent;
|
||||
- guard PID 26318 alive;
|
||||
- guard port 9222 open.
|
||||
|
||||
## Uncovered cases
|
||||
|
||||
This is a targeted final smoke validation, not a full feature suite. It did not
|
||||
exercise partial-reference LZMA, metadata tailpacking, fragments, multi-device
|
||||
images, forced unmount under active I/O, repeated mount/unmount under memory
|
||||
pressure, or deliberate allocation failure. Those remain separate regression
|
||||
and stress-test work.
|
||||
|
||||
Concise machine-readable evidence is stored in
|
||||
`docs/pre9-manual-evidence/pre9-cache-final-result.json`. Target syscall lines
|
||||
are stored in `docs/pre9-manual-evidence/pre9-cache-final-probes.txt`.
|
||||
Reference in New Issue
Block a user