Speaker
Description
The kernel::block::mq::Request type [1] sits on the I/O hot path of every Rust block device driver. A Request is jointly referenced by the block layer and the driver, with completion arriving on multiple asynchronous paths, so the type has to encode a non-trivial sharing and lifecycle model with minimal runtime cost.
The introduction of Ownable [2] gave us a general mechanism for types that oscillate between owned and reference-counted forms, and applying it to Request cleaned up parts of the API [3]. However, the resulting scheme remains hard to reason about for reviewers [4]. We would like to use an LPC session to walk through the proposed changes with the wider Rust-for-Linux audience to further the review process.
To anchor the discussion, we plan to bring the following content to the session:
- A walk-through of the reworked reference counting scheme.
- Benchmark results from
rnullthat quantify the cost of the scheme on representative I/O workloads.
The goal of the session is to surface concerns from the community, iron out pain points in the API shape, and build shared understanding of why the scheme looks the way it does — so that when the next version hits the list, the basic design is already broadly understood and accepted.
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/rust/kernel/block/mq/request.rs?h=v7.1-rc5#n24
[2] https://lore.kernel.org/r/20260224-unique-ref-v16-0-c21afcb118d3@kernel.org
[3] https://lore.kernel.org/r/20260216-rnull-v6-19-rc5-send-v1-5-de9a7af4b469@kernel.org
[4] https://lore.kernel.org/r/87qzopwttw.fsf@kernel.org