* [PATCH 1/1] scsi/ses: Saw "Failed to get diagnostic page 0x1" during
@ 2021-08-17 19:57 wenxiong
2021-09-08 4:12 ` Martin K. Petersen
0 siblings, 1 reply; 2+ messages in thread
From: wenxiong @ 2021-08-17 19:57 UTC (permalink / raw)
To: jejb; +Cc: linux-scsi, brking1, wenxiong, Wen Xiong
From: Wen Xiong <wenxiong@linux.vnet.ibm.com>
We saw two errors with Slider drawer:
- Failed to get diagnostic page 0x1 during booting up
- /sys/class/enclosure are empty with ipr adapter + Slider drawer
From scsi logging level with error=3, looks ses_recv_diag not try on a UA.
Added scsi_test_unit_ready() which retried with UA. The patch fixes
both of above errors.
Signed-Off-by: Wen Xiong <wenxiong@linux.vnet.ibm.com>
Reviewed-by: Brian King <brking@linux.vnet.ibm.com>
---
drivers/scsi/ses.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/scsi/ses.c b/drivers/scsi/ses.c
index c2afba2a5414..5811639a0747 100644
--- a/drivers/scsi/ses.c
+++ b/drivers/scsi/ses.c
@@ -633,6 +633,8 @@ static int ses_intf_add(struct device *cdev,
int num_enclosures;
struct enclosure_device *edev;
struct ses_component *scomp = NULL;
+ struct scsi_sense_hdr sshdr;
+ int ret;
if (!scsi_device_enclosure(sdev)) {
/* not an enclosure, but might be in one */
@@ -654,6 +656,10 @@ static int ses_intf_add(struct device *cdev,
if (!hdr_buf || !ses_dev)
goto err_init_free;
+ ret = scsi_test_unit_ready(sdev, SES_TIMEOUT, SES_RETRIES, &sshdr);
+ if (!scsi_status_is_good(ret))
+ goto err_init_free;
+
page = 1;
result = ses_recv_diag(sdev, page, hdr_buf, INIT_ALLOC_SIZE);
if (result)
--
2.27.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH 1/1] scsi/ses: Saw "Failed to get diagnostic page 0x1" during
2021-08-17 19:57 [PATCH 1/1] scsi/ses: Saw "Failed to get diagnostic page 0x1" during wenxiong
@ 2021-09-08 4:12 ` Martin K. Petersen
0 siblings, 0 replies; 2+ messages in thread
From: Martin K. Petersen @ 2021-09-08 4:12 UTC (permalink / raw)
To: wenxiong; +Cc: jejb, linux-scsi, brking1, wenxiong
Hi Wendy!
> From scsi logging level with error=3, looks ses_recv_diag not try on a
> UA. Added scsi_test_unit_ready() which retried with UA. The patch
> fixes both of above errors.
As your own commit message indicates, scsi_recv_diag() does not retry on
Unit Attention. I would like to see a fix which addresses that
deficiency in general and not just during the first invocation.
I suggest you modify scsi_recv_diag() to retry the RECEIVE DIAGNOSTIC
operation after getting a transient error.
Thanks!
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-09-08 4:13 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-17 19:57 [PATCH 1/1] scsi/ses: Saw "Failed to get diagnostic page 0x1" during wenxiong
2021-09-08 4:12 ` 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.