Expand description
2026-09-25: The StorageBackend trait, which moves KV groups and blocks
between a storage tier and device memory, and the two file backends.
Owner: metrale-storage high-speed swap. Invariants:
- A backend that keeps the default
read_blocksissues, for each block, the per-head reads ofexpand_blocks_to_groups, in that order (pinned bymod_tests.rs).
Re-exports§
pub use self::io_uring::IoUringBackend;pub use posix::PosixBackend;
Modules§
- io_
uring - 2026-09-25: The Linux file backend:
io_uringfixed-buffer reads (SQPOLL, registered pinned buffers) intoqdbounce buffers, each copied to the device on the caller’s stream. - posix
- 2026-09-25: The portable file backend: one pinned bounce buffer, a
positional read through
crate::tier::pio(pread/pwriteon unix,seek_read/seek_writeon Windows) and a host-to-device copy per group.HighSpeedSwapuses it on every target but Linux.
Structs§
- Block
Read Request - 2026-09-25: Read one whole block (
block_bytes(): every kv_head’s K, then every V) into device memory starting atdst_dev_ptr. Onlybase_key’slayerandblockare read. - Read
Request - 2026-09-25: Read
groupfrom the tier into device memory atdst_dev_ptr.
Traits§
Functions§
- expand_
blocks_ to_ groups - 2026-09-25: Expand each block request into its
2·nkvper-head requests, orderedK(kh), V(kh)forkhin0..nkv, with device destinationsdst + kh·gs(K) anddst + (nkv + kh)·gs(V). The defaultread_blocksandread_blocks_asyncfan out through it.