qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH 5/5] scsi-bsg: Add initial support for BSG based


From: Nicholas A. Bellinger
Subject: [Qemu-devel] Re: [PATCH 5/5] scsi-bsg: Add initial support for BSG based SCSIDeviceInfo
Date: Wed, 24 Nov 2010 01:08:06 -0800

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<address@hidden>
> >
> > 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<address@hidden>
> > 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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]