Re: [PATCH v3 13/20] sg: add sg v4 interface support

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

 



On Wed, 2019-08-07 at 13:42 +0200, Douglas Gilbert wrote:
> Add support for the sg v4 interface based on struct sg_io_v4 found
> in include/uapi/linux/bsg.h and only previously supported by the
> bsg driver. Add ioctl(SG_IOSUBMIT) and ioctl(SG_IORECEIVE) for
> async (non-blocking) usage of the sg v4 interface. Do not accept
> the v3 interface with these ioctls. Do not accept the v4
> interface with this driver's existing write() and read()
> system calls.
> 
> For sync (blocking) usage expand the existing ioctl(SG_IO)
> to additionally accept the sg v4 interface object.

First the meta comments:

Since this is effectively a new interface for sg, we're not constrained
by what happened before.  Specifically, we don't want to support the
read/write interface for v4, that should remain only for legacy v3.

We're already discussing what the correct async interface should look
like, I won't comment on the IOSUBMIT/IORECEIVE parts.

Given that we want to unify the v4 code paths, I think this:
 
> @@ -1293,15 +1528,25 @@ sg_ctl_sg_io(struct file *filp, struct
> sg_device *sdp, struct sg_fd *sfp,
>  		return res;
>  	if (copy_from_user(h3p, p, SZ_SG_IO_HDR))
>  		return -EFAULT;
> -	if (h3p->interface_id == 'S')
> -		res = sg_submit(filp, sfp, h3p, true, &srp);
> -	else
> +	if (h3p->interface_id == 'Q') {
> +		/* copy in rest of sg_io_v4 object */
> +		if (copy_from_user(hu8arr + SZ_SG_IO_HDR,
> +				   ((u8 __user *)p) + SZ_SG_IO_HDR,
> +				   SZ_SG_IO_V4 - SZ_SG_IO_HDR))
> +			return -EFAULT;
> +		res = sg_v4_submit(filp, sfp, p, h4p, true, &srp);

Can simply become

if (h3p->interface_id == 'Q')
	return bsg_sg_io(sdp->request_queue, filp->file_mode, p);

And all the duplicate code could then be eliminated.  Of course, we
have to export bsg_sg_io, but that should be a trivial addition.

James





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux