31 lines
1.3 KiB
Markdown
31 lines
1.3 KiB
Markdown
# Pre13 H03a: bounded qstr comparator carrier
|
|
|
|
## Scope
|
|
|
|
- Added a private `struct erofs_qstr` to `src/namei.c` with explicit `name`
|
|
and `end` pointers.
|
|
- Converted `erofs_dirnamecmp()` to consume bounded qstr objects.
|
|
- Kept the existing search helpers on their original pointer/length interface
|
|
through a temporary local adapter. Block search, VOP lookup, vnode locking,
|
|
namecache timing, errno handling, readdir, and cookies are unchanged.
|
|
|
|
## Static equivalence
|
|
|
|
- Search and disk lengths are still derived from the same pointer ranges.
|
|
- `matched` is clamped to both ranges before comparison.
|
|
- Comparison remains unsigned byte ordering, supports non-NUL search keys and
|
|
embedded NUL bytes, and never assumes a trailing NUL at the disk boundary.
|
|
- The adapter performs no allocation, copying, normalization, or error mapping.
|
|
|
|
## Comparator gate
|
|
|
|
Tests baseline: `ce03c283e6e2cb8f1b69c8eff21f7d06098a4fbe`.
|
|
|
|
- Python deterministic corpus: PASS, 11,562 cases.
|
|
- Independent C harness: PASS, 1,048,576 cases.
|
|
|
|
These host comparator results prove the old and new comparison contracts are
|
|
equivalent for the generated corpus. They are not dynamic filesystem feature
|
|
test results. H03 still requires TC042, TC043, TC044, TC045, TC053, TC054,
|
|
TC123, TC141, and TC148, followed by the final smoke test.
|