Repository navigation
chore(bycorf): adopt fixed-buffer submission optimization - #418
Conversation
Advance Bycorf to the upstream merge of eloqdata#29. Default CompactAccessOptions::stream_inspect_ to nullopt so partial aggregate initializers in current main remain warning-clean under GCC Werror.
|
No actionable comments were generated in the recent review. WalkthroughThe ChangesBycorf subproject reference
Stream inspection option default
Estimated code review effort: 2 (Simple) | ~8 minutes Change: Refactor Possibly related PRs
Suggested labels: Suggested reviewers: Merge Risk:
|
Context
Adopt the merged Bycorf fixed-buffer submission optimization from eloqdata/bycorf#29. Previously, forwarding a fixed-buffer request could materialize several copies of the descriptor on the stack, including on the SPDK path.
Behavior before and after
Worker, StorageBackend and the concrete backend now borrow the
FixedBufferdescriptor during synchronous submission. The backend snapshots queued request parameters before returning; the actual data buffer and registration still live through completion. Lavik's existing submission calls remain compatible.Implementation
Advance the Bycorf submodule from
4b10a34e8eff7d991018454a682019773e3a112eto the upstream merge commitac35bac748034f33a49a34d23b3b305287417077. Also defaultCompactAccessOptions::stream_inspect_tostd::nullopt, matching the adjacent optional fields. Partial aggregate initialization on current main otherwise fails the GCC build with-Werror=missing-field-initializers; this preserves the existing empty optional value.Design decisions and alternatives
Use the merged upstream revision. Its source tree is identical to the tested Bycorf PR #29 head; awaitables continue to own descriptors and queued I/O continues to own its prepared parameters.
Documentation and comments
No architecture claim changes: backend selection, shared-ring ownership, and completion lifetimes remain the same. The dependency contains the descriptor-borrowing API comments and regression tests.
Test plan
From the Lavik repository root:
Lavik's GCC Release build and LTO link passed with
LAVIK_ENABLE_WERROR=ON. Formatting and whitespace checks passed.The identical upstream Bycorf source tree previously passed 96 normal tests and 123 bypass-capable tests, including descriptor reuse/reset while fixed reads and writes wait in io_uring or SPDK queues. These unchanged dependency tests were not rerun for the pin update.
Risk assessment
The fixed-buffer submission signatures change at the binary interface, so dependents must be rebuilt. The Lavik executable was rebuilt against the updated dependency. Upstream instruction/stack reductions are static code-generation evidence; hardware throughput and latency were not measured.
Rollback plan
Revert this commit to restore the previous Bycorf pin.
Reviewer guide
Review the implementation, ownership regression tests and assembly evidence in Bycorf #29, then verify the merged pin and the one-line optional default initializer.
Follow-up work
None required for this dependency update.
Summary by CodeRabbit