public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Wen Xiong <wenxiong@linux.ibm.com>,
	Brian King <brking@linux.ibm.com>,
	James Bottomley <jejb@linux.ibm.com>,
	"Martin K . Petersen" <martin.petersen@oracle.com>,
	Sasha Levin <sashal@kernel.org>,
	linux-scsi@vger.kernel.org
Subject: [PATCH AUTOSEL 5.14 33/40] scsi: ses: Retry failed Send/Receive Diagnostic commands
Date: Tue, 28 Sep 2021 01:55:17 -0400	[thread overview]
Message-ID: <20210928055524.172051-33-sashal@kernel.org> (raw)
In-Reply-To: <20210928055524.172051-1-sashal@kernel.org>

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

[ Upstream commit fbdac19e642899455b4e64c63aafe2325df7aafa ]

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

Retry if the Send/Receive Diagnostic commands complete with a transient
error status (NOT_READY or UNIT_ATTENTION with ASC 0x29).

Link: https://lore.kernel.org/r/1631849061-10210-2-git-send-email-wenxiong@linux.ibm.com
Reviewed-by: Brian King <brking@linux.ibm.com>
Reviewed-by: James Bottomley <jejb@linux.ibm.com>
Signed-off-by: Wen Xiong <wenxiong@linux.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 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..43e682297fd5 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;
+	unsigned int retries = SES_RETRIES;
+	struct scsi_sense_hdr sshdr;
+
+	do {
+		ret = scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buf, bufflen,
+				       &sshdr, SES_TIMEOUT, 1, NULL);
+	} while (ret > 0 && --retries && scsi_sense_valid(&sshdr) &&
+		 (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;
+	unsigned int retries = SES_RETRIES;
+
+	do {
+		result = scsi_execute_req(sdev, cmd, DMA_TO_DEVICE, buf, bufflen,
+					  &sshdr, SES_TIMEOUT, 1, NULL);
+	} while (result > 0 && --retries && scsi_sense_valid(&sshdr) &&
+		 (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.33.0


  parent reply	other threads:[~2021-09-28  5:57 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-28  5:54 [PATCH AUTOSEL 5.14 01/40] spi: rockchip: handle zero length transfers without timing out Sasha Levin
2021-09-28  5:54 ` [PATCH AUTOSEL 5.14 02/40] afs: Add missing vnode validation checks Sasha Levin
2021-09-28  5:54 ` [PATCH AUTOSEL 5.14 03/40] platform/x86: touchscreen_dmi: Add info for the Chuwi HiBook (CWI514) tablet Sasha Levin
2021-09-28  5:54 ` [PATCH AUTOSEL 5.14 04/40] platform/x86: touchscreen_dmi: Update info for the Chuwi Hi10 Plus (CWI527) tablet Sasha Levin
2021-09-28  5:54 ` [PATCH AUTOSEL 5.14 05/40] nfsd: back channel stuck in SEQ4_STATUS_CB_PATH_DOWN Sasha Levin
2021-09-28  5:54 ` [PATCH AUTOSEL 5.14 06/40] btrfs: replace BUG_ON() in btrfs_csum_one_bio() with proper error handling Sasha Levin
2021-09-28  5:54 ` [PATCH AUTOSEL 5.14 07/40] btrfs: fix mount failure due to past and transient device flush error Sasha Levin
2021-09-28  5:54 ` [PATCH AUTOSEL 5.14 08/40] net: mdio: introduce a shutdown method to mdio device drivers Sasha Levin
2021-09-28  5:54 ` [PATCH AUTOSEL 5.14 09/40] xen-netback: correct success/error reporting for the SKB-with-fraglist case Sasha Levin
2021-09-28  5:54 ` [PATCH AUTOSEL 5.14 10/40] sparc64: fix pci_iounmap() when CONFIG_PCI is not set Sasha Levin
2021-09-28  5:54 ` [PATCH AUTOSEL 5.14 11/40] platform/x86/intel: hid: Add DMI switches allow list Sasha Levin
2021-09-28  5:54 ` [PATCH AUTOSEL 5.14 12/40] platform/x86: gigabyte-wmi: add support for B550I Aorus Pro AX Sasha Levin
2021-09-28  5:54 ` [PATCH AUTOSEL 5.14 13/40] ext2: fix sleeping in atomic bugs on error Sasha Levin
2021-09-28  5:54 ` [PATCH AUTOSEL 5.14 14/40] drm/amdkfd: handle svm migrate init error Sasha Levin
2021-09-28  5:54 ` [PATCH AUTOSEL 5.14 15/40] drm/amdkfd: fix svm_migrate_fini warning Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 16/40] scsi: sd: Free scsi_disk device via put_device() Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 17/40] scsi: elx: efct: Do not hold lock while calling fc_vport_terminate() Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 18/40] usb: testusb: Fix for showing the connection speed Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 19/40] usb: dwc2: check return value after calling platform_get_resource() Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 20/40] habanalabs/gaudi: use direct MSI in single mode Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 21/40] habanalabs: fail collective wait when not supported Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 22/40] habanalabs/gaudi: fix LBW RR configuration Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 23/40] selftests: be sure to make khdr before other targets Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 24/40] selftests:kvm: fix get_warnings_count() ignoring fscanf() return warn Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 25/40] selftests:kvm: fix get_trans_hugepagesz() " Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 26/40] selftests: kvm: move get_run_delay() into lib/test_util Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 27/40] selftests: kvm: fix get_run_delay() ignoring fscanf() return warn Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 28/40] Xen/gntdev: don't ignore kernel unmapping error Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 29/40] swiotlb-xen: ensure to issue well-formed XENMEM_exchange requests Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 30/40] nvme-fc: update hardware queues before using them Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 31/40] nvme-fc: avoid race between time out and tear down Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 32/40] thermal/drivers/tsens: Fix wrong check for tzd in irq handlers Sasha Levin
2021-09-28  5:55 ` Sasha Levin [this message]
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 34/40] irqchip/gic: Work around broken Renesas integration Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 35/40] smb3: correct smb3 ACL security descriptor Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 36/40] x86/insn, tools/x86: Fix undefined behavior due to potential unaligned accesses Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 37/40] io_uring: allow conditional reschedule for intensive iterators Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 38/40] block: don't call rq_qos_ops->done_bio if the bio isn't tracked Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 39/40] tools/vm/page-types: remove dependency on opt_file for idle page tracking Sasha Levin
2021-09-28  5:55 ` [PATCH AUTOSEL 5.14 40/40] kasan: always respect CONFIG_KASAN_STACK Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210928055524.172051-33-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=brking@linux.ibm.com \
    --cc=jejb@linux.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=stable@vger.kernel.org \
    --cc=wenxiong@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox