From: Wen Xiong <redacted>
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 <redacted>
Reviewed-by: Brian King <redacted>
---
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