vhost-device/vhost-device-scsi
dependabot[bot] 9991d2e52e build(deps): bump the vhost-device group with 14 updates
Bumps the vhost-device group with 14 updates:

| Package | From | To |
| --- | --- | --- |
| [clap](https://github.com/clap-rs/clap) | `4.4.6` | `4.4.8` |
| [env_logger](https://github.com/rust-cli/env_logger) | `0.10.0` | `0.10.1` |
| [libc](https://github.com/rust-lang/libc) | `0.2.149` | `0.2.150` |
| [tempfile](https://github.com/Stebalien/tempfile) | `3.8.0` | `3.8.1` |
| [num_enum](https://github.com/illicitonion/num_enum) | `0.7.0` | `0.7.1` |
| [serde_yaml](https://github.com/dtolnay/serde-yaml) | `0.9.25` | `0.9.27` |
| [cc](https://github.com/rust-lang/cc-rs) | `1.0.83` | `1.0.84` |
| [getrandom](https://github.com/rust-random/getrandom) | `0.2.10` | `0.2.11` |
| [indexmap](https://github.com/bluss/indexmap) | `2.0.2` | `2.1.0` |
| [linux-raw-sys](https://github.com/sunfishcode/linux-raw-sys) | `0.4.10` | `0.4.11` |
| [proc-macro-crate](https://github.com/bkchr/proc-macro-crate) | `1.3.1` | `2.0.0` |
| [rustix](https://github.com/bytecodealliance/rustix) | `0.38.21` | `0.38.22` |
| [termcolor](https://github.com/BurntSushi/termcolor) | `1.3.0` | `1.4.0` |
| [winnow](https://github.com/winnow-rs/winnow) | `0.5.17` | `0.5.19` |


Updates `clap` from 4.4.6 to 4.4.8
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.4.6...v4.4.8)

Updates `env_logger` from 0.10.0 to 0.10.1
- [Release notes](https://github.com/rust-cli/env_logger/releases)
- [Changelog](https://github.com/rust-cli/env_logger/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-cli/env_logger/compare/v0.10.0...v0.10.1)

Updates `libc` from 0.2.149 to 0.2.150
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.149...0.2.150)

Updates `tempfile` from 3.8.0 to 3.8.1
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/commits)

Updates `num_enum` from 0.7.0 to 0.7.1
- [Commits](https://github.com/illicitonion/num_enum/compare/0.7.0...0.7.1)

Updates `serde_yaml` from 0.9.25 to 0.9.27
- [Release notes](https://github.com/dtolnay/serde-yaml/releases)
- [Commits](https://github.com/dtolnay/serde-yaml/compare/0.9.25...0.9.27)

Updates `cc` from 1.0.83 to 1.0.84
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Commits](https://github.com/rust-lang/cc-rs/compare/1.0.83...1.0.84)

Updates `getrandom` from 0.2.10 to 0.2.11
- [Changelog](https://github.com/rust-random/getrandom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/getrandom/compare/v0.2.10...v0.2.11)

Updates `indexmap` from 2.0.2 to 2.1.0
- [Changelog](https://github.com/bluss/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/bluss/indexmap/compare/2.0.2...2.1.0)

Updates `linux-raw-sys` from 0.4.10 to 0.4.11
- [Commits](https://github.com/sunfishcode/linux-raw-sys/compare/v0.4.10...v0.4.11)

Updates `proc-macro-crate` from 1.3.1 to 2.0.0
- [Release notes](https://github.com/bkchr/proc-macro-crate/releases)
- [Commits](https://github.com/bkchr/proc-macro-crate/compare/v1.3.1...v2.0.0)

Updates `rustix` from 0.38.21 to 0.38.22
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.21...v0.38.22)

Updates `termcolor` from 1.3.0 to 1.4.0
- [Commits](https://github.com/BurntSushi/termcolor/compare/1.3.0...1.4.0)

Updates `winnow` from 0.5.17 to 0.5.19
- [Changelog](https://github.com/winnow-rs/winnow/blob/main/CHANGELOG.md)
- [Commits](https://github.com/winnow-rs/winnow/compare/v0.5.17...v0.5.19)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: vhost-device
- dependency-name: env_logger
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: vhost-device
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: vhost-device
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: vhost-device
- dependency-name: num_enum
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: vhost-device
- dependency-name: serde_yaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: vhost-device
- dependency-name: cc
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: vhost-device
- dependency-name: getrandom
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: vhost-device
- dependency-name: indexmap
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: vhost-device
- dependency-name: linux-raw-sys
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: vhost-device
- dependency-name: proc-macro-crate
  dependency-type: indirect
  update-type: version-update:semver-major
  dependency-group: vhost-device
- dependency-name: rustix
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: vhost-device
- dependency-name: termcolor
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: vhost-device
- dependency-name: winnow
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: vhost-device
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-14 11:21:09 +01:00
..
src Update vhost-user-backend to 0.11 series 2023-11-14 10:48:19 +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 vhost-device group with 14 updates 2023-11-14 11:21:09 +01:00
CHANGELOG.md Move all crates to workspace root 2023-10-16 12:03:57 +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.