A virtio storage interface for efficient I/O that overcomes virtio-blk limitations and supports advanced SCSI hardware.


  • /dev/sda inside guest
  • Multiple LUNs per PCI adapter, solves virtio-blk 1:1 scalability problem
  • SCSI passthrough (tape, CD burning, ...)


Future tasks

  • Pick up vhost-scsi work again:
    • Port QEMU hw/virtio-scsi.c vhost-scsi support onto latest code
    • add QEMU Object Model (QOM) support to the vhost-scsi device
    • Port LIO vhost-scsi code onto latest lio.git code
    • Update vhost-scsi to implement latest virtio-scsi device specification
    • Ensure vhost-scsi I/O still works
    • Design libvirt integration for LIO
  • QEMU SCSI target:
    • Add support for WRITE SAME commands
    • Add support for rerror/werror to scsi-generic
  • Complete virtio-scsi spec implementation:
    • Add support for hotplug events
    • Add support for asynchronous media change notifications
    • Multi-queue (with fine-grained locking in the Linux driver?)
  • Use cases to test:
    • CD-ROM/DVD burning passthrough
    • Tape passthrough
    • 100s of LUNs (scalability)
  • Use cases to flesh out:
    • LUN hotplug (known to work with manual hotplug)
    • Multipath inside guest
  • Performance analysis
    • Compare against virtio-blk I/O (rough numbers: 6% slower on iozone with a tmpfs-backed disk)
    • Compare passthrough performance against bare metal host SCSI
    • Measure scalability and where the bottlenecks are (full virtqueues? locks?)



Note: you must use either Paolo's trees or Stefan's trees, you cannot mix QEMU from Paolo with Linux from Stefan and vice versa.

Paolo's code with QEMU SCSI emulation

  • QEMU (virtio-scsi): git://github.com/bonzini/qemu.git virtio-scsi
  • Linux (virtio-scsi): git://github.com/bonzini/virtio-scsi.git

Stefan's code with tcm_vhost

Zhi Yong Wu's code

 Note: His git tree has mainly done two works:
 1.) integrated vhost-scsi with qemu.git/master;
 2.) updated tcm_vhost based on latest virio-scsi spec