Files
erofs-freebsd-out-tree/docs/pre13-h03c.md
T
2026-08-18 09:20:44 +02:00

1.6 KiB

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.