On Mon, Apr 18, 2011 at 3:05 PM, Hannes Reinecke <h...@suse.de> wrote: > On 04/15/2011 10:56 PM, Paolo Bonzini wrote: >> >> On 04/15/2011 05:04 PM, Stefan Hajnoczi wrote: >>> >>> The way I approached virtio-scsi was to look at the SCSI Architecture >>> Model document and some of the Linux SCSI code. I'm not sure if >>> letting virtio-blk SCSI pass-through or scsi-generic guide us is a >>> good approach. >>> >>> How do your ioprio and barrier relate to SCSI? >> >> Both are part of the transport protocol, which can provide >> additional features with respect to SAM. For example SCSI doesn't >> provide the full details of hotplug/hotunplug, or doesn't have a way >> for the guest to trigger a drive unplug on the host, but these are >> all desirable features for virtio-scsi (and they are supported by >> vmw_pvscsi by the way). >> > And this is something I really miss in the current proposals, namely > a working transport layer. > > The SCSI spec (SPC etc) itself just handles command delivery between > initiator and target. Anything else (like hotplug, error recovery, target > addressing etc) is out of the scope of the spec and needs to be implemented > on another layer (that's the ominous > transport layer). > > Hence any protocol implemented to the above spec would be missing those > parts, and they would need to be implemented additionally. > Which also explains why these features are missing when just using SCSI CDBs > as the main command container. > > My proposal would be to implement a full virtio-scsi _host_, and extend the > proposal to be able to handle the transport layer too. > At the lastest we would need to include a LUN address before the CDB, and > define TMF command values for proper error recovery. > > That way we could handle hotplug / -unplug via a simple host rescan, and > would even be able to pass-in NPIV hosts.
In my prototype there is a header and a footer for the request and response, respectively: http://git.kernel.org/?p=linux/kernel/git/nab/lio-core-2.6.git;a=blob;f=include/linux/virtio_scsi.h;hb=refs/heads/tcm_vhost We definitely need more than plain CDB pass-through. Stefan