37 lines
1.6 KiB
Markdown
37 lines
1.6 KiB
Markdown
# 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.
|