Re: [PATCH 14/20] [SCSI] mpt3sas: Complete the SCSI command with DID_RESET status for log_info value 0x0x32010081

2015-06-15 Thread Sreekanth Reddy
On Mon, Jun 15, 2015 at 3:31 PM, Johannes Thumshirn  wrote:
> On Fri, Jun 12, 2015 at 03:12:26PM +0530, Sreekanth Reddy wrote:
>> For any SCSI command, if the driver receives
>> IOC status = SCSI_IOC_TERMINATED and log info = 0x32010081 then
>> that command will be completed with DID_RESET host status.
>>
>> The definition of this log info value is
>> "Virtual IO has failed and has to be retried".
>>
>> Firmware will provide this log info value with IOC Status
>> "SCSI_IOC_TERMINATED", whenever a drive (with is a part of a volume)
>> is pulled and pushed back within some minimal delay.
>> With this log info value, firmware informs the driver to retry the
>> failed IO command infinite times, so to provide some time for the
>> firmware to discover the reinserted drive successfully instated of
>> just retrying failed command for five times(doesn't giving enough
>> time for firmware to complete the drive discovery) and failing the
>> IO permanently even though drive came back successfully.
>>
>> Signed-off-by: Sreekanth Reddy 
>> ---
>>  drivers/scsi/mpt3sas/mpt3sas_scsih.c | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c 
>> b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
>> index 64dd90b..837c22a 100644
>> --- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
>> +++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
>> @@ -4241,6 +4241,9 @@ _scsih_io_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, 
>> u8 msix_index, u32 reply)
>>   scmd->device->expecting_cc_ua = 1;
>>   }
>>   break;
>> + } else if (log_info == 0x32010081) {
>> + scmd->result = DID_RESET << 16;
>> + break;
>
> Could you make that a #define instead of some magic vlaue, so everyone can see
> what is happening when reading the source?

Sure, I will define a macro for this log_info value.

Thanks,
Sreekanth
>
>>   }
>>   scmd->result = DID_SOFT_ERROR << 16;
>>   break;
>> --
>> 2.0.2
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
>> the body of a message to majord...@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
> --
> Johannes Thumshirn   Storage
> jthumsh...@suse.de +49 911 74053 689
> SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
> GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
> HRB 21284 (AG Nürnberg)



-- 

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


Re: [PATCH 14/20] [SCSI] mpt3sas: Complete the SCSI command with DID_RESET status for log_info value 0x0x32010081

2015-06-15 Thread Johannes Thumshirn
On Fri, Jun 12, 2015 at 03:12:26PM +0530, Sreekanth Reddy wrote:
> For any SCSI command, if the driver receives
> IOC status = SCSI_IOC_TERMINATED and log info = 0x32010081 then
> that command will be completed with DID_RESET host status.
> 
> The definition of this log info value is
> "Virtual IO has failed and has to be retried".
> 
> Firmware will provide this log info value with IOC Status
> "SCSI_IOC_TERMINATED", whenever a drive (with is a part of a volume)
> is pulled and pushed back within some minimal delay.
> With this log info value, firmware informs the driver to retry the
> failed IO command infinite times, so to provide some time for the
> firmware to discover the reinserted drive successfully instated of
> just retrying failed command for five times(doesn't giving enough
> time for firmware to complete the drive discovery) and failing the
> IO permanently even though drive came back successfully.
> 
> Signed-off-by: Sreekanth Reddy 
> ---
>  drivers/scsi/mpt3sas/mpt3sas_scsih.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c 
> b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
> index 64dd90b..837c22a 100644
> --- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
> +++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
> @@ -4241,6 +4241,9 @@ _scsih_io_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, 
> u8 msix_index, u32 reply)
>   scmd->device->expecting_cc_ua = 1;
>   }
>   break;
> + } else if (log_info == 0x32010081) {
> + scmd->result = DID_RESET << 16;
> + break;

Could you make that a #define instead of some magic vlaue, so everyone can see
what is happening when reading the source?

>   }
>   scmd->result = DID_SOFT_ERROR << 16;
>   break;
> -- 
> 2.0.2
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Johannes Thumshirn   Storage
jthumsh...@suse.de +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 14/20] [SCSI] mpt3sas: Complete the SCSI command with DID_RESET status for log_info value 0x0x32010081

2015-06-12 Thread Sreekanth Reddy
For any SCSI command, if the driver receives
IOC status = SCSI_IOC_TERMINATED and log info = 0x32010081 then
that command will be completed with DID_RESET host status.

The definition of this log info value is
"Virtual IO has failed and has to be retried".

Firmware will provide this log info value with IOC Status
"SCSI_IOC_TERMINATED", whenever a drive (with is a part of a volume)
is pulled and pushed back within some minimal delay.
With this log info value, firmware informs the driver to retry the
failed IO command infinite times, so to provide some time for the
firmware to discover the reinserted drive successfully instated of
just retrying failed command for five times(doesn't giving enough
time for firmware to complete the drive discovery) and failing the
IO permanently even though drive came back successfully.

Signed-off-by: Sreekanth Reddy 
---
 drivers/scsi/mpt3sas/mpt3sas_scsih.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c 
b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
index 64dd90b..837c22a 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
@@ -4241,6 +4241,9 @@ _scsih_io_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 
msix_index, u32 reply)
scmd->device->expecting_cc_ua = 1;
}
break;
+   } else if (log_info == 0x32010081) {
+   scmd->result = DID_RESET << 16;
+   break;
}
scmd->result = DID_SOFT_ERROR << 16;
break;
-- 
2.0.2

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


[PATCH 14/20] [SCSI] mpt3sas: Complete the SCSI command with DID_RESET status for log_info value 0x0x32010081

2015-03-30 Thread Sreekanth Reddy
For any SCSI command, if the driver receives IOC status = SCSI_IOC_TERMINATED 
and log info = 0x32010081 then that command will be completed with DID_RESET 
host status.

The definition of this log info value is "Virtual IO has failed and has to be 
retried".

Firmware will provide this log info value with IOC Status 
"SCSI_IOC_TERMINATED", whenever a drive (with is a part of a volume) is pulled 
and pushed back within some minimal delay.  With this log info value, firmware 
informs the driver to retry the failed IO command infinite times, so to provide 
some time for the firmware to discover the reinserted drive successfully 
instated of just retrying failed command for five times( doesn't giving enough 
time for firmware to complete the drive discovery) and failing the IO 
permanently even though drive came back successfully.

Signed-off-by: Sreekanth Reddy 
---
 drivers/scsi/mpt3sas/mpt3sas_scsih.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c 
b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
index fd00451..55f39f6 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
@@ -4287,6 +4287,9 @@ _scsih_io_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 
msix_index, u32 reply)
scmd->device->expecting_cc_ua = 1;
}
break;
+   } else if (log_info == 0x32010081) {
+   scmd->result = DID_RESET << 16;
+   break;
}
scmd->result = DID_SOFT_ERROR << 16;
break;
-- 
2.0.2

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