On Wed, 2010-11-24 at 10:07 +0100, Paolo Bonzini wrote: > On 11/24/2010 09:40 AM, Nicholas A. Bellinger wrote: > > From: Nicholas Bellinger<n...@linux-iscsi.org> > > > > This patch adds initial support for using the Linux BSG interface with > > write/read vectored > > AIO as a QEMU backstore (SCSIDeviceInfo) with hw/scsi-bus.c compatible HBA > > emulation. > > > > So far it has been tested with x86_64 host and guest using hw/megasas.c and > > TCM_Loop LLD > > Port LUNs. Because this patch uses struct iovec for struct > > sg_io_v4->d[out,in]_xferp payloads, > > which currently requires a patch to linux/block/bsg.c:bsg_map_hdr() in > > order to setup the > > user -> kernel iovecs. This patch can be found in lio-core-2.6.git here: > > > > commit fec4e8457c744de50e1ead69a36d5c4ee089d1ac > > Author: Nicholas Bellinger<n...@linux-iscsi.org> > > Date: Sun Jun 13 23:13:20 2010 -0700 > > > > [BSG]: Add support for struct sg_io_v4->d[out,in]_iovec_count > > > > This also will only currently work with paired user/kernel (eg: 64bit user > > / 64bit kernel) > > because of different pointer sizes in struct iovec->iov_base. > > > > There are also two FIXMEs in hw/scsi-bsg.c:bsg_generic_initfn() related to > > extraction of > > SCSI LUN and device type values using BSG and required by QEMU-KVM. > > Any reason why this should be a different driver than scsi-generic, i.e. > why the scsi-generic should not switch automatically between SG and BSG > depending on the kind of device being opened? > > In fact, there is no reason why scsi-generic should use bounce buffers > rather than sg_iovec_t, so that most of the differences between > scsi-generic and scsi-bsg would go away. >
Originally I split these up into a seperate scsi-bsg.c file because: *) BSG uses aio_submit_len() and polling reads for interaction with the BSG ioctl. *) BSG uses a different struct API (struct sg_io_v4) for user <-> kernel communication. Between hw/scsi-generic.c with Hannes's and Co's recent cleanups scsi-generic.c and scsi-bsg.c are more similar than they used to be in v0.12.5 w/ v1 of Gerd's SCSI SGL passthrough, but I really don't have a strong perference here. Thanks! --nab