Files
erofs-freebsd-out-tree/tests/results/manual/2026-08-09T0839Z-g4/manual-test-report.md
T
2026-08-18 09:20:44 +02:00

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.