Re: [PATCHv2 11/11] mpt3sas: register reserved commands

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

 



On Fri, Feb 17, 2017 at 09:23:10AM +0100, Hannes Reinecke wrote:
> The mpt3sas driver requires a reserved command space to handle
> SCSI passthrough commands.
> 
> Signed-off-by: Hannes Reinecke <hare@xxxxxxxx>
> ---
>  drivers/scsi/mpt3sas/mpt3sas_base.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c
> index e9470a3..97189ad 100644
> --- a/drivers/scsi/mpt3sas/mpt3sas_base.c
> +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
> @@ -2360,6 +2360,8 @@ struct scsiio_tracker *
>  	} else {
>  		u32 unique_tag = blk_mq_unique_tag(scmd->request);
>  		u16 tag = blk_mq_unique_tag_to_tag(unique_tag);
> +
> +		WARN_ON(tag < ioc->shost->reserved_cmds);
>  		request = scsi_cmd_priv(scmd);
>  		smid = tag + 1;
>  	}
> @@ -3521,7 +3523,8 @@ void mpt3sas_base_clear_st(struct MPT3SAS_ADAPTER *ioc,
>  	/* set the scsi host can_queue depth
>  	 * with some internal commands that could be outstanding
>  	 */
> -	ioc->shost->can_queue = ioc->scsiio_depth - INTERNAL_SCSIIO_CMDS_COUNT;
> +	ioc->shost->reserved_cmds = INTERNAL_SCSIIO_CMDS_COUNT;
> +	ioc->shost->can_queue = ioc->scsiio_depth - ioc->shost->reserved_cmds;

You're never allocating a reserved request.  Just remove the number of
reserved cmds from can_queue and you can use them on your own.

So I don't think you'll actually need to use reserved request here,
but instead you should set up can_queue properly earlier in the series.



[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