mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 14/20 v1] [SCSI] mpt3sas: Complete the SCSI command with DID_RESET status for log_info value 0x0x32010081
@ 2015-06-16  5:35 Sreekanth Reddy
  2015-06-18  8:36 ` Johannes Thumshirn
  2015-06-19 20:38 ` Martin K. Petersen
  0 siblings, 2 replies; 3+ messages in thread
From: Sreekanth Reddy @ 2015-06-16  5:35 UTC (permalink / raw)
  To: jejb, hch, jthumshirn
  Cc: martin.petersen, linux-scsi, JBottomley, Sathya.Prakash,
	linux-kernel, 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.

Changes in v1:
   Defined macro VIRTUAL_IO_FAILED_RETRY for magic a value 0x32010081

Signed-off-by: Sreekanth Reddy <Sreekanth.Reddy@avagotech.com>
---
 drivers/scsi/mpt3sas/mpt3sas_base.h  | 2 ++
 drivers/scsi/mpt3sas/mpt3sas_scsih.c | 3 +++
 2 files changed, 5 insertions(+)

diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.h b/drivers/scsi/mpt3sas/mpt3sas_base.h
index 0ffe763..f3f79be 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_base.h
+++ b/drivers/scsi/mpt3sas/mpt3sas_base.h
@@ -203,6 +203,8 @@
 #define MFG10_GF0_SSD_DATA_SCRUB_DISABLE       (0x00000008)
 #define MFG10_GF0_SINGLE_DRIVE_R0              (0x00000010)
 
+#define VIRTUAL_IO_FAILED_RETRY			(0x32010081)
+
 /* OEM Specific Flags will come from OEM specific header files */
 struct Mpi2ManufacturingPage10_t {
 	MPI2_CONFIG_PAGE_HEADER	Header;		/* 00h */
diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
index 7060c8b..7587f77 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
@@ -4302,6 +4302,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 == VIRTUAL_IO_FAILED_RETRY) {
+			scmd->result = DID_RESET << 16;
+			break;
 		}
 		scmd->result = DID_SOFT_ERROR << 16;
 		break;
-- 
2.0.2


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH 14/20 v1] [SCSI] mpt3sas: Complete the SCSI command with DID_RESET status for log_info value 0x0x32010081
  2015-06-16  5:35 [PATCH 14/20 v1] [SCSI] mpt3sas: Complete the SCSI command with DID_RESET status for log_info value 0x0x32010081 Sreekanth Reddy
@ 2015-06-18  8:36 ` Johannes Thumshirn
  2015-06-19 20:38 ` Martin K. Petersen
  1 sibling, 0 replies; 3+ messages in thread
From: Johannes Thumshirn @ 2015-06-18  8:36 UTC (permalink / raw)
  To: Sreekanth Reddy
  Cc: jejb, hch, martin.petersen, linux-scsi, JBottomley,
	Sathya.Prakash, linux-kernel

On Tue, Jun 16, 2015 at 11:05:24AM +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.
> 
> Changes in v1:
>    Defined macro VIRTUAL_IO_FAILED_RETRY for magic a value 0x32010081
> 
> Signed-off-by: Sreekanth Reddy <Sreekanth.Reddy@avagotech.com>
> ---
>  drivers/scsi/mpt3sas/mpt3sas_base.h  | 2 ++
>  drivers/scsi/mpt3sas/mpt3sas_scsih.c | 3 +++
>  2 files changed, 5 insertions(+)
> 
> diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.h b/drivers/scsi/mpt3sas/mpt3sas_base.h
> index 0ffe763..f3f79be 100644
> --- a/drivers/scsi/mpt3sas/mpt3sas_base.h
> +++ b/drivers/scsi/mpt3sas/mpt3sas_base.h
> @@ -203,6 +203,8 @@
>  #define MFG10_GF0_SSD_DATA_SCRUB_DISABLE       (0x00000008)
>  #define MFG10_GF0_SINGLE_DRIVE_R0              (0x00000010)
>  
> +#define VIRTUAL_IO_FAILED_RETRY			(0x32010081)
> +
>  /* OEM Specific Flags will come from OEM specific header files */
>  struct Mpi2ManufacturingPage10_t {
>  	MPI2_CONFIG_PAGE_HEADER	Header;		/* 00h */
> diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
> index 7060c8b..7587f77 100644
> --- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
> +++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
> @@ -4302,6 +4302,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 == VIRTUAL_IO_FAILED_RETRY) {
> +			scmd->result = DID_RESET << 16;
> +			break;
>  		}
>  		scmd->result = DID_SOFT_ERROR << 16;
>  		break;
> -- 
> 2.0.2
>

Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>

-- 
Johannes Thumshirn                                       Storage
jthumshirn@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)

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH 14/20 v1] [SCSI] mpt3sas: Complete the SCSI command with DID_RESET status for log_info value 0x0x32010081
  2015-06-16  5:35 [PATCH 14/20 v1] [SCSI] mpt3sas: Complete the SCSI command with DID_RESET status for log_info value 0x0x32010081 Sreekanth Reddy
  2015-06-18  8:36 ` Johannes Thumshirn
@ 2015-06-19 20:38 ` Martin K. Petersen
  1 sibling, 0 replies; 3+ messages in thread
From: Martin K. Petersen @ 2015-06-19 20:38 UTC (permalink / raw)
  To: Sreekanth Reddy
  Cc: jejb, hch, jthumshirn, martin.petersen, linux-scsi, JBottomley,
	Sathya.Prakash, linux-kernel

>>>>> Sreekanth Reddy <sreekanth.reddy@avagotech.com> writes:

> 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.

Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>

-- 
Martin K. Petersen	Oracle Linux Engineering
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-06-19 21:13 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-16  5:35 [PATCH 14/20 v1] [SCSI] mpt3sas: Complete the SCSI command with DID_RESET status for log_info value 0x0x32010081 Sreekanth Reddy
2015-06-18  8:36 ` Johannes Thumshirn
2015-06-19 20:38 ` Martin K. Petersen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®