update
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
# repo22 G4 full manual regression report
|
||||
|
||||
## Scope and result
|
||||
|
||||
- Exact scope: TC005, TC067-TC083, TC117, TC134-TC140, TC142.
|
||||
- Count check: 27 requested, 27 executed, 0 duplicate, 0 omitted.
|
||||
- Result: **PASS 27, FAIL 0, SHELVE 0, NOT RUN 0**.
|
||||
- Kernel source baseline: `9ae22009f23a65320730072a780998e80aa9b728`.
|
||||
- No repo22 kernel source was changed during this regression.
|
||||
- No kernel failure was found, so no new `issues/` entry was required.
|
||||
|
||||
## Isolated environment
|
||||
|
||||
- Worktree: `/work/build/repo22-manual-g4-20260809T072432Z`.
|
||||
- Branch: `manual-g4-20260809T072432Z`.
|
||||
- Dedicated qcow2 overlay backed by the FreeBSD 15 development base.
|
||||
- Dedicated SSH forward: `127.0.0.1:9224`; port 9222 was not used.
|
||||
- Guest: FreeBSD `15.0-RELEASE-p8`, amd64, GENERIC,
|
||||
`releng/15.0-n281036-53054229dcb3`.
|
||||
- Final guest cleanup: zero matching mounts, zero md units, EROFS malloc
|
||||
active count 0, KLD unloaded, guest responsive, QEMU stopped.
|
||||
|
||||
## Exact KLD build
|
||||
|
||||
The module used only `repo-community/repo22/src` from the baseline worktree.
|
||||
It was built for `x86_64-unknown-freebsd15` with all 14 Makefile source files,
|
||||
FreeBSD `15.0 RELEASE-p9` headers, clang/LLD 19.1.7, and `WITH_ZSTDIO=0`.
|
||||
The guest is p8; both header and guest are the same FreeBSD 15 release KBI.
|
||||
|
||||
```text
|
||||
erofs.ko SHA256 = ee0b2e7c4ebf3602de8be8d47ddcfd021bc90a5265e7e9bf449bb9de2fbf4f04
|
||||
guest kldstat = erofs.ko, module erofs, id 507
|
||||
```
|
||||
|
||||
## Fixture provenance
|
||||
|
||||
Installed `mkfs.erofs`, `dump.erofs`, and `fsck.erofs` reported erofs-utils
|
||||
1.8.6. `tests/g4_fixtures.py` created both source trees without consuming old
|
||||
images, ran four deterministic mkfs commands, transformed structured fields,
|
||||
and reopened every result. A second fresh output directory produced identical
|
||||
source and image checksum files.
|
||||
|
||||
```text
|
||||
source inventory SHA256 = c48f72777b0a04514fcfc7ea9c4ed77089ab0ed4537eac9cb7430e1acafe3d0a
|
||||
metabox payload SHA256 = 50c5740b5fe5630ee919022d7ee1ce59d3e7d089c9d66e2baf82bf9de8233d40
|
||||
```
|
||||
|
||||
| Image | SHA256 |
|
||||
|---|---|
|
||||
| `basic.erofs` | `b375a3ca60de64b2c635b3ec45c9285c840e0a05bec105d5d8f68308300e7670` |
|
||||
| `prefix-primary.erofs` | `49fc472a26412d154df729d8b0079801b35e97af2eb7fc3fa226dc65ee1963f9` |
|
||||
| `metabox-plain.erofs` | `dd7b04097d1bfe283b65c95d759acd2176beb7cb0f1fe9d5ddbc0694b5acba9d` |
|
||||
| `metabox-compressed.erofs` | `682b9dc1e0b492d935c03deba2ab644c1f0bcbf8e1ec623c15fb4990d25fe584` |
|
||||
| `metabox-fragment.erofs` | `c93f4c281ed621519ced42a45cdb21b543047b7058dab31ad0def851cc19f4f1` |
|
||||
| `bad-inline-entry.erofs` | `f18693c880bac0a273f2497cb0f81c0c52e19edc3ad45354eb38a39624adafd2` |
|
||||
| `bad-shared-entry.erofs` | `875c27df56de2336fded3ef1db1c9fdc035db618096aa9269bfe70ea6f59c664` |
|
||||
| `bad-shared-declared-bounds.erofs` | `19fc69cbe21051de2cf1cc19454cf64cc4a0ece444c6607956e066c2d4d332b3` |
|
||||
| `bad-prefix-declared-bounds.erofs` | `d24b7a171aa28c3a46e3893749a4d08ab5d467c103f47aefcc0ca0f4e153d365` |
|
||||
| `bad-metabox-truncated-extension.erofs` | `0bad23b1ad77eb8f2ffee83f89b7ef91b1c49ba2a20661adca21cd9efce0911e` |
|
||||
| `bad-ishare-prefix-id.erofs` | `10357f28a11c2a8bbc329e01a414248415719ef088734a6ad75b934c0f65fc43` |
|
||||
| `bad-fragment-self-loop.erofs` | `3b61228041591716c650a6613de30b2d9abe8b01148a9ae513b7de4d9b958d78` |
|
||||
| `bad-fragment-range.erofs` | `432618f98a6e32351448120d8c694a4f31b45cb3078e08dad39b85fa01b47039` |
|
||||
| `bad-metabox-recursive-nid.erofs` | `ab28a5478f569eb8a59e59e94448a85918885fcd328dadc2557ba6222dcd5aaf` |
|
||||
| `bad-packed-recursive-nid.erofs` | `ad9a0ed1598c8a8e16911190c9042d58315fbcdc23af824ea106af55ffe6f2f4` |
|
||||
|
||||
The fragment positive self-check found carrier NID 46, compressed-full layout,
|
||||
size 32768, fragment header `0x8000000000000064` at image offset 9696,
|
||||
fragment offset 100, packed NID 48, and packed size 32868. Thus
|
||||
`100 + 32768 == 32868`. Shared entries were at metabox offsets 4096, 4128,
|
||||
and 4156; prefix records were at 8192 and 8224 with base indexes 1 and 4.
|
||||
|
||||
## FreeBSD namespace semantics
|
||||
|
||||
Linux `user.*` was queried through FreeBSD namespace `user` with the leading
|
||||
`user.` removed. Linux `trusted.*`, `security.*`, and ACL indexes were queried
|
||||
through namespace `system`. Trusted/security list names retained their full
|
||||
prefixes; ACL names were `posix_acl_access`/`posix_acl_default`. This is the
|
||||
FreeBSD extattr ABI and intentionally does not copy Linux `getfattr` commands.
|
||||
|
||||
`getextattr` does not reliably communicate every kernel failure through its
|
||||
process status, so errno evidence came from guest `truss`: `ENOATTR=87`,
|
||||
`EINTEGRITY=97`, and `EROFS=30`. Every corruption in this scope returned
|
||||
`EINTEGRITY`; no case required normalization to `EIO=5`.
|
||||
|
||||
## Per-TC results
|
||||
|
||||
| TC | Guest evidence | Result |
|
||||
|---|---|---|
|
||||
| TC005 | inline user list; exact NUL-containing value; miss `ENOATTR 87` | PASS |
|
||||
| TC067 | shared `shared_key` exact on two files; inline `local` exact | PASS |
|
||||
| TC068 | missing name and wrong namespace both `ENOATTR 87` | PASS |
|
||||
| TC069 | three shared names once; text, NUL, and binary values exact | PASS |
|
||||
| TC070 | shared `trusted.config` exact; unprivileged system access denied | PASS |
|
||||
| TC071 | shared `security.selinux` exact; miss `ENOATTR 87` | PASS |
|
||||
| TC072 | system lists trusted, security, ACL names; user subset empty | PASS |
|
||||
| TC073 | plain metabox mounted; bit-63 inodes, file hashes, xattrs exact | PASS |
|
||||
| TC074 | three inline user values exact, including `00..1f` | PASS |
|
||||
| TC075 | inline `trusted.admin` exact; user lookup `ENOATTR 87` | PASS |
|
||||
| TC076 | capability and SELinux binary bytes exact | PASS |
|
||||
| TC077 | packed user long-prefix names and values exact | PASS |
|
||||
| TC078 | packed trusted long-prefix names and values exact | PASS |
|
||||
| TC079 | packed NID 1201; two qualified records; both namespaces exact | PASS |
|
||||
| TC080 | four repeated prefix lookups exact; miss `ENOATTR 87` | PASS |
|
||||
| TC081 | metabox shared, inline, and long-prefix shared values exact | PASS |
|
||||
| TC082 | raw ACL bytes and `getfacl -n` agree; user lookup `ENOATTR 87` | PASS |
|
||||
| TC083 | four user attributes exact; system list empty | PASS |
|
||||
| TC117 | malformed inline/shared gets both `EINTEGRITY 97`; mount stable | PASS |
|
||||
| TC134 | nonzero xattr base shared value exact on two bit-63 inodes | PASS |
|
||||
| TC135 | metabox, packed, and primary prefix backings all exact | PASS |
|
||||
| TC136 | truncated extension and bad ishare ID mounts `EINTEGRITY 97` | PASS |
|
||||
| TC137 | shared get and prefix mount bounded at declared image, errno 97 | PASS |
|
||||
| TC138 | UID order 3002/2002 accepted; empty fallback; 3 negatives errno 97 | PASS |
|
||||
| TC139 | FIFO stat/ACL/xattr reads; set/delete operations `EROFS 30` | PASS |
|
||||
| TC140 | compressed and fragment metabox positive; 4 negatives errno 97 | PASS |
|
||||
| TC142 | independent fragment rerun positive; 4 negatives errno 97 | PASS |
|
||||
|
||||
## Stability and cleanup
|
||||
|
||||
Positive values were compared as `getextattr -qq -x` bytes, not display text.
|
||||
Negative mount and VOP calls were traced at the kernel syscall boundary. Each
|
||||
case recorded zero matching mounts and zero matching md providers after its
|
||||
cleanup. TC140 and TC142 additionally showed:
|
||||
|
||||
```text
|
||||
erofs active allocations = 0
|
||||
guest responsiveness = ok
|
||||
panic/trap/hang = none
|
||||
```
|
||||
|
||||
The final KLD unload succeeded. The dedicated guest powered off, QEMU exited,
|
||||
and TCP port 9224 no longer had a listener. Generated images, KLDs, overlays,
|
||||
and raw logs remained outside Git and were not included in the commit.
|
||||
Reference in New Issue
Block a user