7.2 KiB
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.
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.
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:
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.