This commit is contained in:
2026-08-18 09:20:44 +02:00
commit b826cd721a
522 changed files with 93730 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
# Pre13 H03c: qstr VOP lookup adapter
## Scope
- Changed the private `erofs_namei()` interface to accept the bounded qstr
carrier directly.
- Moved search qstr construction to the `erofs_lookup()` FreeBSD VOP adapter,
using exactly `cn_nameptr` and `cn_namelen` after the existing length checks.
- Removed the temporary qstr construction from `erofs_namei()`.
No changes were made to `componentname` validation, mutation rejection, `.` or
`..` handling, vnode lock mode, `vn_vget_ino()`, `erofs_vget()`, namecache
timing, errno mapping, readdir, directory cookies, or directory UIO handling.
## Static evidence
- The qstr search range is `[cn_nameptr, cn_nameptr + cn_namelen)` and does not
require or inspect a trailing NUL.
- The only `erofs_namei()` caller remains `erofs_lookup()`.
- A true `ENOENT` remains the only result eligible for negative `cache_enter()`;
`EINTEGRITY` and all other errors still return directly.
- `ISDOTDOT` still selects `vn_vget_ino()` with the original `cn_lkflags`;
ordinary hits still select `erofs_vget()` with the same lock flags.
- The H03c diff does not modify any `cache_enter()`, vnode lookup, lock, cookie,
readdir, or UIO statement.
## Comparator gate
Tests baseline: `ce03c283e6e2cb8f1b69c8eff21f7d06098a4fbe`.
- Python deterministic corpus: PASS, 11,562 cases.
- Independent C harness: PASS, 1,048,576 cases.
The comparator gates are host static-equivalence evidence, not dynamic feature
tests. Dynamic H03 validation remains pending for TC042, TC043, TC044, TC045,
TC053, TC054, TC123, TC141, and TC148, followed by the final smoke test.