RE: [PATCH] aacraid: Fix 2T+ drives on SmartIOC-2000

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

 



> -----Original Message-----
> From: Dave Carroll [mailto:david.carroll@xxxxxxxxxxxxx]
> Sent: Wednesday, August 30, 2017 3:23 PM
> To: Martin K . Petersen <martin.petersen@xxxxxxxxxx>; James Bottomley
> <jejb@xxxxxxxxxxxxxxxxxx>
> Cc: Dave Carroll <david.carroll@xxxxxxxxxxxxx>; linux-scsi <linux-
> scsi@xxxxxxxxxxxxxxx>; dl-esc-Aacraid Linux Driver
> <aacraid@xxxxxxxxxxxxx>; Scott Benesh <scott.benesh@xxxxxxxxxxxxx>;
> Brian King <brking@xxxxxxxxxxxxxxxxxx>; stable@xxxxxxxxxxxxxxx
> Subject: [PATCH] aacraid: Fix 2T+ drives on SmartIOC-2000
> 
> The logic for supporting large drives was previously tied to 4Kn support
> for SmartIOC-2000. As SmartIOC-2000 does not support volumes using 4Kn
> drives, use the intended option flag AAC_OPT_NEW_COMM_64 to
> determine
> support for volumes greater than 2T.
> 
> cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Dave Carroll <david.carroll@xxxxxxxxxxxxx>
> 
> ---
>  drivers/scsi/aacraid/aachba.c  | 12 ++++++------
>  drivers/scsi/aacraid/aacraid.h |  5 +++++
>  2 files changed, 11 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
> index 4591113..18a1a1f 100644
> --- a/drivers/scsi/aacraid/aachba.c
> +++ b/drivers/scsi/aacraid/aachba.c
> @@ -695,13 +695,13 @@ static void _aac_probe_container1(void * context,
> struct fib * fibptr)
>  	int status;
> 
>  	dresp = (struct aac_mount *) fib_data(fibptr);
> -	if (!(fibptr->dev->supplement_adapter_info.supported_options2 &
> -	    AAC_OPTION_VARIABLE_BLOCK_SIZE))
> +	if (!aac_supports_2T(fibptr->dev)) {
>  		dresp->mnt[0].capacityhigh = 0;
> -	if ((le32_to_cpu(dresp->status) != ST_OK) ||
> -	    (le32_to_cpu(dresp->mnt[0].vol) != CT_NONE)) {
> -		_aac_probe_container2(context, fibptr);
> -		return;
> +		if ((le32_to_cpu(dresp->status) == ST_OK) &&
> +			(le32_to_cpu(dresp->mnt[0].vol) != CT_NONE)) {
> +			_aac_probe_container2(context, fibptr);
> +			return;
> +		}
>  	}
>  	scsicmd = (struct scsi_cmnd *) context;
> 
> diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
> index 6981299..998fbad 100644
> --- a/drivers/scsi/aacraid/aacraid.h
> +++ b/drivers/scsi/aacraid/aacraid.h
> @@ -2701,6 +2701,11 @@ static inline int aac_is_src(struct aac_dev *dev)
>  	return 0;
>  }
> 
> +static inline int aac_supports_2T(struct aac_dev *dev)
> +{
> +	return (dev->adapter_info.options & AAC_OPT_NEW_COMM_64);
> +}
> +
>  char * get_container_type(unsigned type);
>  extern int numacb;
>  extern char aac_driver_version[];
> --
> 2.8.4

Reviewed-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@xxxxxxxxxxxxx>




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]