All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RESEND V4 0/1] Saw "Failed to get diagnostic page 0x1"
@ 2021-09-17  3:24 wenxiong
  2021-09-17  3:24 ` [PATCH RESEND V4 1/1] scsi/ses: " wenxiong
  2021-09-22  4:44 ` [PATCH RESEND V4 0/1] " Martin K. Petersen
  0 siblings, 2 replies; 3+ messages in thread
From: wenxiong @ 2021-09-17  3:24 UTC (permalink / raw)
  To: jejb; +Cc: linux-scsi, brking, martin.petersen, wenxiong, Wen Xiong

From: Wen Xiong <wenxiong@linux.ibm.com>

v4:
Add checking return value before calling scsi_sense_valid()
v3:
checked to retry on NOT_READY and UNIT_ATTENTION
v2:
checked to retry on UNIT_ATTENTION in ses_recv_diag();
v1:
called scsi_test_unit_ready() to eat UA in ses_recv_diag()

Wen Xiong (1):
  scsi/ses: Saw "Failed to get diagnostic page 0x1"

 drivers/scsi/ses.c | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

-- 
2.27.0


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

* [PATCH RESEND V4 1/1] scsi/ses: Saw "Failed to get diagnostic page 0x1"
  2021-09-17  3:24 [PATCH RESEND V4 0/1] Saw "Failed to get diagnostic page 0x1" wenxiong
@ 2021-09-17  3:24 ` wenxiong
  2021-09-22  4:44 ` [PATCH RESEND V4 0/1] " Martin K. Petersen
  1 sibling, 0 replies; 3+ messages in thread
From: wenxiong @ 2021-09-17  3:24 UTC (permalink / raw)
  To: jejb; +Cc: linux-scsi, brking, martin.petersen, wenxiong, Wen Xiong

From: Wen Xiong <wenxiong@linux.ibm.com>

Setting scsi logging level with error=3, we saw some errors from enclosues:

[108017.360833] ses 0:0:9:0: tag#641 Done: NEEDS_RETRY Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK cmd_age=0s
[108017.360838] ses 0:0:9:0: tag#641 CDB: Receive Diagnostic 1c 01 01 00 20 00
[108017.427778] ses 0:0:9:0: Power-on or device reset occurred
[108017.427784] ses 0:0:9:0: tag#641 Done: SUCCESS Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=0s
[108017.427788] ses 0:0:9:0: tag#641 CDB: Receive Diagnostic 1c 01 01 00 20 00
[108017.427791] ses 0:0:9:0: tag#641 Sense Key : Unit Attention [current]
[108017.427793] ses 0:0:9:0: tag#641 Add. Sense: Bus device reset function occurred
[108017.427801] ses 0:0:9:0: Failed to get diagnostic page 0x1
[108017.427804] ses 0:0:9:0: Failed to bind enclosure -19
[108017.427895] ses 0:0:10:0: Attached Enclosure device
[108017.427942] ses 0:0:10:0: Attached scsi generic sg18 type 13

As Martin's suggestion, the patch checks to retry on NOT_READY as well as
UNIT_ATTENTION with ASC 0x29.

Signed-off-by: Wen Xiong <wenxiong@linux.ibm.com>
Reviewed-by: Brian King <brking@linux.ibm.com>
Reviewed-by: James Bottomley <jejb@linux.ibm.com>
---
 drivers/scsi/ses.c | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/ses.c b/drivers/scsi/ses.c
index c2afba2a5414..e42775a6d3ff 100644
--- a/drivers/scsi/ses.c
+++ b/drivers/scsi/ses.c
@@ -87,9 +87,16 @@ static int ses_recv_diag(struct scsi_device *sdev, int page_code,
 		0
 	};
 	unsigned char recv_page_code;
+	struct scsi_sense_hdr sshdr;
+	int retries = SES_RETRIES;
+
+	do {
+		ret =  scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buf, bufflen,
+			&sshdr, SES_TIMEOUT, 1, NULL);
+	} while (ret > 0 && scsi_sense_valid(&sshdr) && --retries &&
+		(sshdr.sense_key == NOT_READY ||
+		(sshdr.sense_key == UNIT_ATTENTION && sshdr.asc == 0x29)));
 
-	ret =  scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buf, bufflen,
-				NULL, SES_TIMEOUT, SES_RETRIES, NULL);
 	if (unlikely(ret))
 		return ret;
 
@@ -121,9 +128,16 @@ static int ses_send_diag(struct scsi_device *sdev, int page_code,
 		bufflen & 0xff,
 		0
 	};
+	struct scsi_sense_hdr sshdr;
+	int retries = SES_RETRIES;
+
+	do {
+		result =  scsi_execute_req(sdev, cmd, DMA_TO_DEVICE, buf, bufflen,
+			&sshdr, SES_TIMEOUT, 1, NULL);
+	} while (result > 0 && scsi_sense_valid(&sshdr) && --retries &&
+		(sshdr.sense_key == NOT_READY ||
+		(sshdr.sense_key == UNIT_ATTENTION && sshdr.asc == 0x29)));
 
-	result = scsi_execute_req(sdev, cmd, DMA_TO_DEVICE, buf, bufflen,
-				  NULL, SES_TIMEOUT, SES_RETRIES, NULL);
 	if (result)
 		sdev_printk(KERN_ERR, sdev, "SEND DIAGNOSTIC result: %8x\n",
 			    result);
-- 
2.27.0


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

* Re: [PATCH RESEND V4 0/1] Saw "Failed to get diagnostic page 0x1"
  2021-09-17  3:24 [PATCH RESEND V4 0/1] Saw "Failed to get diagnostic page 0x1" wenxiong
  2021-09-17  3:24 ` [PATCH RESEND V4 1/1] scsi/ses: " wenxiong
@ 2021-09-22  4:44 ` Martin K. Petersen
  1 sibling, 0 replies; 3+ messages in thread
From: Martin K. Petersen @ 2021-09-22  4:44 UTC (permalink / raw)
  To: wenxiong, jejb; +Cc: Martin K . Petersen, linux-scsi, wenxiong, brking

On Thu, 16 Sep 2021 22:24:20 -0500, wenxiong@linux.ibm.com wrote:

> From: Wen Xiong <wenxiong@linux.ibm.com>
> 
> v4:
> Add checking return value before calling scsi_sense_valid()
> v3:
> checked to retry on NOT_READY and UNIT_ATTENTION
> v2:
> checked to retry on UNIT_ATTENTION in ses_recv_diag();
> v1:
> called scsi_test_unit_ready() to eat UA in ses_recv_diag()
> 
> [...]

Applied to 5.15/scsi-fixes, thanks!

[1/1] scsi/ses: Saw "Failed to get diagnostic page 0x1"
      https://git.kernel.org/mkp/scsi/c/fbdac19e6428

-- 
Martin K. Petersen	Oracle Linux Engineering

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

end of thread, other threads:[~2021-09-22  4:45 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-17  3:24 [PATCH RESEND V4 0/1] Saw "Failed to get diagnostic page 0x1" wenxiong
2021-09-17  3:24 ` [PATCH RESEND V4 1/1] scsi/ses: " wenxiong
2021-09-22  4:44 ` [PATCH RESEND V4 0/1] " Martin K. Petersen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.