vhost-device/vhost-device-scsi
dependabot[bot] e1ef9d0239 build(deps): bump the rust-vmm group across 2 directories with 4 updates
Bumps the rust-vmm group with 3 updates in the / directory: [vhost-user-backend](https://github.com/rust-vmm/vhost), [virtio-queue](https://github.com/rust-vmm/vm-virtio) and [virtio-vsock](https://github.com/rust-vmm/vm-virtio).
Bumps the rust-vmm group with 2 updates in the /staging directory: [vhost-user-backend](https://github.com/rust-vmm/vhost) and [virtio-queue](https://github.com/rust-vmm/vm-virtio).


Updates `vhost-user-backend` from 0.19.0 to 0.20.0
- [Release notes](https://github.com/rust-vmm/vhost/releases)
- [Commits](https://github.com/rust-vmm/vhost/compare/vhost-user-backend-v0.19.0...vhost-user-backend-v0.20.0)

Updates `virtio-bindings` from 0.2.5 to 0.2.6
- [Release notes](https://github.com/rust-vmm/vm-virtio/releases)
- [Commits](https://github.com/rust-vmm/vm-virtio/compare/virtio-bindings-v0.2.5...virtio-bindings-v0.2.6)

Updates `virtio-queue` from 0.15.0 to 0.16.0
- [Release notes](https://github.com/rust-vmm/vm-virtio/releases)
- [Commits](https://github.com/rust-vmm/vm-virtio/compare/virtio-queue-v0.15.0...virtio-queue-v0.16.0)

Updates `virtio-vsock` from 0.9.0 to 0.10.0
- [Release notes](https://github.com/rust-vmm/vm-virtio/releases)
- [Commits](https://github.com/rust-vmm/vm-virtio/compare/virtio-vsock-v0.9.0...virtio-vsock-v0.10.0)

Updates `vhost-user-backend` from 0.19.0 to 0.20.0
- [Release notes](https://github.com/rust-vmm/vhost/releases)
- [Commits](https://github.com/rust-vmm/vhost/compare/vhost-user-backend-v0.19.0...vhost-user-backend-v0.20.0)

Updates `virtio-bindings` from 0.2.5 to 0.2.6
- [Release notes](https://github.com/rust-vmm/vm-virtio/releases)
- [Commits](https://github.com/rust-vmm/vm-virtio/compare/virtio-bindings-v0.2.5...virtio-bindings-v0.2.6)

Updates `virtio-queue` from 0.15.0 to 0.16.0
- [Release notes](https://github.com/rust-vmm/vm-virtio/releases)
- [Commits](https://github.com/rust-vmm/vm-virtio/compare/virtio-queue-v0.15.0...virtio-queue-v0.16.0)

Updates `vhost-user-backend` from 0.19.0 to 0.20.0
- [Release notes](https://github.com/rust-vmm/vhost/releases)
- [Commits](https://github.com/rust-vmm/vhost/compare/vhost-user-backend-v0.19.0...vhost-user-backend-v0.20.0)

Updates `virtio-bindings` from 0.2.5 to 0.2.6
- [Release notes](https://github.com/rust-vmm/vm-virtio/releases)
- [Commits](https://github.com/rust-vmm/vm-virtio/compare/virtio-bindings-v0.2.5...virtio-bindings-v0.2.6)

Updates `virtio-queue` from 0.15.0 to 0.16.0
- [Release notes](https://github.com/rust-vmm/vm-virtio/releases)
- [Commits](https://github.com/rust-vmm/vm-virtio/compare/virtio-queue-v0.15.0...virtio-queue-v0.16.0)

Updates `vhost-user-backend` from 0.19.0 to 0.20.0
- [Release notes](https://github.com/rust-vmm/vhost/releases)
- [Commits](https://github.com/rust-vmm/vhost/compare/vhost-user-backend-v0.19.0...vhost-user-backend-v0.20.0)

Updates `virtio-bindings` from 0.2.5 to 0.2.6
- [Release notes](https://github.com/rust-vmm/vm-virtio/releases)
- [Commits](https://github.com/rust-vmm/vm-virtio/compare/virtio-bindings-v0.2.5...virtio-bindings-v0.2.6)

Updates `virtio-queue` from 0.15.0 to 0.16.0
- [Release notes](https://github.com/rust-vmm/vm-virtio/releases)
- [Commits](https://github.com/rust-vmm/vm-virtio/compare/virtio-queue-v0.15.0...virtio-queue-v0.16.0)

---
updated-dependencies:
- dependency-name: vhost-user-backend
  dependency-version: 0.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-vmm
- dependency-name: virtio-bindings
  dependency-version: 0.2.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-vmm
- dependency-name: virtio-queue
  dependency-version: 0.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-vmm
- dependency-name: virtio-vsock
  dependency-version: 0.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-vmm
- dependency-name: vhost-user-backend
  dependency-version: 0.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-vmm
- dependency-name: virtio-bindings
  dependency-version: 0.2.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-vmm
- dependency-name: virtio-queue
  dependency-version: 0.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-vmm
- dependency-name: vhost-user-backend
  dependency-version: 0.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-vmm
- dependency-name: virtio-bindings
  dependency-version: 0.2.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-vmm
- dependency-name: virtio-queue
  dependency-version: 0.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-vmm
- dependency-name: vhost-user-backend
  dependency-version: 0.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-vmm
- dependency-name: virtio-bindings
  dependency-version: 0.2.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-vmm
- dependency-name: virtio-queue
  dependency-version: 0.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-vmm
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-07 10:40:35 +03:00
..
src chore: bump virtio-queue and some related dependencies 2025-06-23 21:36:11 +02:00
test Move all crates to workspace root 2023-10-16 12:03:57 +05:30
ARCHITECTURE.md Move all crates to workspace root 2023-10-16 12:03:57 +05:30
Cargo.toml build(deps): bump the rust-vmm group across 2 directories with 4 updates 2025-07-07 10:40:35 +03:00
CHANGELOG.md chore: standardize changelogs 2024-07-24 19:37:19 +05:30
LICENSE-APACHE Move all crates to workspace root 2023-10-16 12:03:57 +05:30
LICENSE-BSD-3-Clause Move all crates to workspace root 2023-10-16 12:03:57 +05:30
README.md Move all crates to workspace root 2023-10-16 12:03:57 +05:30

vhost-device-scsi

This is a Rust implementation of a vhost-device-scsi daemon.

Usage

Run the vhost-device-scsi daemon:

vhost-device-scsi -r --socket-path /tmp/vhost-user-scsi.sock /path/to/image.raw /path/to/second-image.raw ...

Run QEMU:

qemu-system-x86_64 ... \
  -device vhost-user-scsi-pci,num_queues=1,param_change=off,chardev=vus \
  -chardev socket,id=vus,path=/tmp/vhost-user-scsi.sock \
  # must match total guest meory
  -object memory-backend-memfd,id=mem,size=384M,share=on \
  -numa node,memdev=mem

Limitations

We are currently only supporting a single request queue and do not support dynamic reconfiguration of LUN parameters (VIRTIO_SCSI_F_CHANGE).

Features

This crate is a work-in-progress. Currently, it's possible to mount and read up to 256 read-only raw disk images. Some features we might like to add at some point, roughly ordered from sooner to later:

  • Write support. This should just be a matter of implementing the WRITE command, but there's a bit of complexity around writeback caching we need to make sure we get right.
  • Support more LUNs. virtio-scsi supports up to 16384 LUNs per target. After 256, the LUN encoding format is different; it's nothing too complicated, but I haven't gotten around to implementing it.
  • Concurrency. Currently, we process SCSI commands one at a time. Eventually, it'd be a good idea to use threads or some fancy async/io_uring stuff to concurrently handle multiple commands. virtio-scsi also allows for multiple request queues, allowing the guest to submit requests from multiple cores in parallel; we should support that.
  • iSCSI passthrough. This shouldn't be too bad, but it might be a good idea to decide on a concurrency model (threads or async) before we spend too much time here.