StorVSP
StorVSP is the VMBus SCSI controller emulator. It presents a virtual SCSI adapter to the guest over a VMBus channel and translates SCSI requests into calls against the shared disk backend abstraction.
Overview
StorVSP implements the Hyper-V synthetic SCSI protocol — a
VMBus-based transport that carries SCSI CDBs (Command Descriptor
Blocks) between the guest's storvsc driver and the host. This
isn't a standard SCSI transport (like iSCSI or SAS); it's a
Hyper-V-specific wire format defined in
storvsp_protocol.
The guest side (storvsc) is in the Linux kernel and Windows inbox
drivers.
Each SCSI path (channel / target / LUN) maps to an
AsyncScsiDisk
implementation — typically
SimpleScsiDisk
for hard drives or
SimpleScsiDvd
for optical media. Those implementations parse the SCSI CDB and
translate it into
DiskIo
calls (read, write, flush, unmap).
Key characteristics
- Transport. VMBus ring buffers with GPADL-backed memory.
- Protocol. Hyper-V SCSI (SRB-based), with version negotiation (Win6 through Blue).
- Sub-channels. StorVSP supports multiple VMBus sub-channels for parallel I/O, one worker per channel.
- Hot-add / hot-remove. SCSI devices can be attached and
detached at runtime via
ScsiControllerRequest. - Performance. Poll-mode optimization — when pending I/O count
exceeds
poll_mode_queue_depth, switches from interrupt-driven to busy-poll for new requests, reducing guest exit frequency. - Crate.
storvsp
The storage pipeline page
covers the full frontend-to-backend architecture, including the SCSI
adapter layer and how SimpleScsiDisk translates CDB opcodes to
DiskIo calls.