All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Christie <michael.christie@oracle.com>
To: john.g.garry@oracle.com, bvanassche@acm.org, mwilck@suse.com,
	hch@lst.de, martin.petersen@oracle.com,
	linux-scsi@vger.kernel.org,
	james.bottomley@hansenpartnership.com
Cc: Mike Christie <michael.christie@oracle.com>
Subject: [PATCH v11 04/34] scsi: Have scsi-ml retry scsi_probe_lun errors
Date: Tue,  5 Sep 2023 18:15:17 -0500	[thread overview]
Message-ID: <20230905231547.83945-5-michael.christie@oracle.com> (raw)
In-Reply-To: <20230905231547.83945-1-michael.christie@oracle.com>

This has scsi_probe_lun ask scsi-ml to retry UAs instead of driving them
itself.

There is one behavior change with this patch. We used to get a total of
3 retries for both UAs we were checking for. We now get 3 retries for
each.

Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
---
 drivers/scsi/scsi_scan.c | 42 +++++++++++++++++++++++-----------------
 1 file changed, 24 insertions(+), 18 deletions(-)

diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index 52014b2d39e1..0accd2f0f295 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -647,10 +647,29 @@ static int scsi_probe_lun(struct scsi_device *sdev, unsigned char *inq_result,
 	int first_inquiry_len, try_inquiry_len, next_inquiry_len;
 	int response_len = 0;
 	int pass, count, result, resid;
-	struct scsi_sense_hdr sshdr;
+	/*
+	 * not-ready to ready transition [asc/ascq=0x28/0x0] or power-on,
+	 * reset [asc/ascq=0x29/0x0], continue. INQUIRY should not yield
+	 * UNIT_ATTENTION but many buggy devices do so anyway.
+	 */
+	struct scsi_failure failures[] = {
+		{
+			.sense = UNIT_ATTENTION,
+			.asc = 0x28,
+			.allowed = 3,
+			.result = SAM_STAT_CHECK_CONDITION,
+		},
+		{
+			.sense = UNIT_ATTENTION,
+			.asc = 0x29,
+			.allowed = 3,
+			.result = SAM_STAT_CHECK_CONDITION,
+		},
+		{}
+	};
 	const struct scsi_exec_args exec_args = {
-		.sshdr = &sshdr,
 		.resid = &resid,
+		.failures = failures,
 	};
 
 	*bflags = 0;
@@ -668,6 +687,8 @@ static int scsi_probe_lun(struct scsi_device *sdev, unsigned char *inq_result,
 				pass, try_inquiry_len));
 
 	/* Each pass gets up to three chances to ignore Unit Attention */
+	scsi_reset_failures(failures);
+
 	for (count = 0; count < 3; ++count) {
 		memset(scsi_cmd, 0, 6);
 		scsi_cmd[0] = INQUIRY;
@@ -684,22 +705,7 @@ static int scsi_probe_lun(struct scsi_device *sdev, unsigned char *inq_result,
 				"scsi scan: INQUIRY %s with code 0x%x\n",
 				result ? "failed" : "successful", result));
 
-		if (result > 0) {
-			/*
-			 * not-ready to ready transition [asc/ascq=0x28/0x0]
-			 * or power-on, reset [asc/ascq=0x29/0x0], continue.
-			 * INQUIRY should not yield UNIT_ATTENTION
-			 * but many buggy devices do so anyway. 
-			 */
-			if (scsi_status_is_check_condition(result) &&
-			    scsi_sense_valid(&sshdr)) {
-				if ((sshdr.sense_key == UNIT_ATTENTION) &&
-				    ((sshdr.asc == 0x28) ||
-				     (sshdr.asc == 0x29)) &&
-				    (sshdr.ascq == 0))
-					continue;
-			}
-		} else if (result == 0) {
+		if (result == 0) {
 			/*
 			 * if nothing was transferred, we try
 			 * again. It's a workaround for some USB
-- 
2.34.1


  parent reply	other threads:[~2023-09-05 23:25 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-05 23:15 scsi: Allow scsi_execute users to control retries Mike Christie
2023-09-05 23:15 ` [PATCH v11 01/34] scsi: Add helper to prep sense during error handling Mike Christie
2023-09-05 23:15 ` [PATCH v11 02/34] scsi: Allow passthrough to override what errors to retry Mike Christie
2023-09-15 20:08   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 03/34] scsi: Add scsi_failure field to scsi_exec_args Mike Christie
2023-09-05 23:15 ` Mike Christie [this message]
2023-09-15 20:11   ` [PATCH v11 04/34] scsi: Have scsi-ml retry scsi_probe_lun errors Martin Wilck
2023-09-05 23:15 ` [PATCH v11 05/34] scsi: retry INQUIRY after timeout Mike Christie
2023-09-15 20:11   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 06/34] scsi: sd: Fix sshdr use in read_capacity_16 Mike Christie
2023-09-15 20:13   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 07/34] scsi: sd: Have scsi-ml retry read_capacity_16 errors Mike Christie
2023-09-15 20:21   ` Martin Wilck
2023-09-15 21:34     ` Martin Wilck
2023-09-18  0:35       ` Mike Christie
2023-09-18 16:48         ` Martin Wilck
2023-09-18 18:45           ` Mike Christie
2023-09-19  9:07             ` Martin Wilck
2023-09-19 18:02               ` Mike Christie
2023-09-05 23:15 ` [PATCH v11 08/34] scsi: Use separate buf for START_STOP in sd_spinup_disk Mike Christie
2023-09-15 20:26   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 09/34] scsi: sd: Fix sshdr use " Mike Christie
2023-09-15 20:27   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 10/34] scsi: Have scsi-ml retry sd_spinup_disk errors Mike Christie
2023-09-15 20:46   ` Martin Wilck
2023-09-15 20:58     ` Mike Christie
2023-09-15 21:23       ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 11/34] scsi: hp_sw: Only access sshdr if res > 0 Mike Christie
2023-09-15 20:48   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 12/34] scsi: hp_sw: Have scsi-ml retry scsi_exec_req errors Mike Christie
2023-09-15 20:51   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 13/34] scsi: rdac: Fix send_mode_select retry handling Mike Christie
2023-09-15 20:54   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 14/34] scsi: rdac: Fix sshdr use Mike Christie
2023-09-15 20:55   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 15/34] scsi: rdac: Have scsi-ml retry send_mode_select errors Mike Christie
2023-09-15 20:58   ` Martin Wilck
2023-09-15 21:52     ` Mike Christie
2023-09-05 23:15 ` [PATCH v11 16/34] scsi: spi: Fix sshdr use Mike Christie
2023-09-15 20:59   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 17/34] scsi: spi: Have scsi-ml retry spi_execute errors Mike Christie
2023-09-15 21:00   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 18/34] scsi: sd: Fix sshdr use in sd_suspend_common Mike Christie
2023-09-15 21:04   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 19/34] scsi: sd: Have scsi-ml retry sd_sync_cache errors Mike Christie
2023-09-15 21:10   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 20/34] scsi: ch: Remove unit_attention Mike Christie
2023-09-15 21:08   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 21/34] scsi: ch: Have scsi-ml retry ch_do_scsi errors Mike Christie
2023-09-15 21:11   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 22/34] scsi: Have scsi-ml retry scsi_mode_sense UAs Mike Christie
2023-09-15 21:11   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 23/34] scsi: sd: Fix scsi_mode_sense caller's sshdr use Mike Christie
2023-09-15 21:13   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 24/34] scsi: Have scsi-ml retry scsi_report_lun_scan errors Mike Christie
2023-09-15 21:17   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 25/34] scsi: sd: Have pr commands retry UAs Mike Christie
2023-09-15 21:18   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 26/34] scsi: sd: Have scsi-ml retry read_capacity_10 errors Mike Christie
2023-09-15 21:25   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 27/34] scsi: ses: Have scsi-ml retry scsi_exec_req errors Mike Christie
2023-09-15 21:34   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 28/34] scsi: sr: Have scsi-ml retry get_sectorsize errors Mike Christie
2023-09-15 21:36   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 29/34] scsi: ufs: Have scsi-ml retry start stop errors Mike Christie
2023-09-15 21:37   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 30/34] scsi: Fix sshdr use in scsi_test_unit_ready Mike Christie
2023-09-15 21:38   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 31/34] scsi: Fix sshdr use in scsi_cdl_enable Mike Christie
2023-09-15 21:39   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 32/34] scsi: sd: Fix sshdr use in cache_type_store Mike Christie
2023-09-15 21:44   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 33/34] scsi: sr: Fix sshdr use in sr_get_events Mike Christie
2023-09-15 21:44   ` Martin Wilck
2023-09-05 23:15 ` [PATCH v11 34/34] scsi: Add kunit tests for scsi_check_passthrough Mike Christie
2023-09-15 21:52   ` Martin Wilck
2023-09-15 22:07     ` Mike Christie

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=20230905231547.83945-5-michael.christie@oracle.com \
    --to=michael.christie@oracle.com \
    --cc=bvanassche@acm.org \
    --cc=hch@lst.de \
    --cc=james.bottomley@hansenpartnership.com \
    --cc=john.g.garry@oracle.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=mwilck@suse.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 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.