Re: [PATCH] sg: add SG_FLAG_Q_AT_TAIL flag

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

 



On Tue, Jun 03, 2014 at 09:36:56PM -0400, Douglas Gilbert wrote:
> When the SG_IO ioctl was copied into the block layer and
> later into the bsg driver, subtle differences emerged.
> 
> One difference is the way injected commands are queued through
> the block layer (i.e. this is not SCSI device queueing nor SATA
> NCQ). Summarizing:
>   - SG_IO in the block layer: blk_exec*(at_head=false)
>   - sg SG_IO: at_head=true
>   - bsg SG_IO: at_head=true
> 
> Some time ago Boaz Harrosh introduced a sg v4 flag called
> BSG_FLAG_Q_AT_TAIL to override the bsg driver default.
> This patch does the equivalent for the sg driver.
> 
> ChangeLog:
> 	Introduce SG_FLAG_Q_AT_TAIL flag to cause commands
> 	to be injected into the block layer with
> 	at_head=false.
> 
> Signed-off-by: Douglas Gilbert <dgilbert@xxxxxxxxxxxx>

> diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
> index 177f755..1b7d4f6 100644
> --- a/drivers/scsi/sg.c
> +++ b/drivers/scsi/sg.c
> @@ -740,7 +740,7 @@ static int
>  sg_common_write(Sg_fd * sfp, Sg_request * srp,
>  		unsigned char *cmnd, int timeout, int blocking)
>  {
> -	int k, data_dir;
> +	int k, data_dir, at_head;
>  	Sg_device *sdp = sfp->parentdp;
>  	sg_io_hdr_t *hp = &srp->header;
>  
> @@ -784,11 +784,12 @@ sg_common_write(Sg_fd * sfp, Sg_request * srp,
>  		break;
>  	}
>  	hp->duration = jiffies_to_msecs(jiffies);
> +	at_head = !(hp->interface_id && (SG_FLAG_Q_AT_TAIL & hp->flags));

It seems like all other occurances of ->interface_id compare to either
'\0' or 'S', so this looks odd.  Also I think this would really benefit
from beeing untangled into and if/else as it took me literally two
minutes to parse..

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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