expand_blocks_to_groups

Function expand_blocks_to_groups 

Source
pub fn expand_blocks_to_groups(
    spec: &GroupLayout,
    reqs: &[BlockReadRequest],
) -> Vec<ReadRequest>
Expand description

Expand each BlockReadRequest into the exact 2·nkv per-head ReadRequests the un-coalesced path issues, in the SAME order the caller loops emit (interleaved K(kh), V(kh) for kh in 0..nkv) with device destinations at dst + kh·gs (K) and dst + (nkv+kh)·gs (V).

This is the SINGLE source of the per-head fan-out: the default read_blocks / write_block_from_host trait impls AND the unit tests consume it, so the RDMA/Cascade backends (which inherit the default) can never drift from the caller-side per-head layout, and byte-identity is pinned host-side.