From: michael.christie@oracle.com
To: Martin Wilck <mwilck@suse.com>,
bvanassche@acm.org, hch@lst.de, martin.petersen@oracle.com,
linux-scsi@vger.kernel.org,
james.bottomley@hansenpartnership.com
Subject: Re: [PATCH v2 23/35] scsi: Have scsi-ml retry sd_spinup_disk errors
Date: Thu, 29 Sep 2022 11:47:58 -0500 [thread overview]
Message-ID: <8a69a003-79bf-aceb-cea1-ab7d05363512@oracle.com> (raw)
In-Reply-To: <80aa76848bb316781953775922e3509410734dd6.camel@suse.com>
On 9/29/22 9:13 AM, Martin Wilck wrote:
> On Wed, 2022-09-28 at 21:53 -0500, Mike Christie wrote:
>> This simplifies sd_spinup_disk so scsi-ml retries errors for it. Note
>> that
>> we retried specifically on a UA and also if scsi_status_is_good
>> returned
>> failed which could happen for all check conditions, so in this patch
>> we
>> don't check for only UAs.
>>
>> We do not handle the outside loop's retries because we want to sleep
>> between tried and we don't support that yet.
>>
>> Signed-off-by: Mike Christie <michael.christie@oracle.com>
>> ---
>> drivers/scsi/sd.c | 76 ++++++++++++++++++++++++++++-----------------
>> --
>> 1 file changed, 45 insertions(+), 31 deletions(-)
>>
>> diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
>> index a35c089c3097..716e0c8ffa57 100644
>> --- a/drivers/scsi/sd.c
>> +++ b/drivers/scsi/sd.c
>> @@ -2064,50 +2064,64 @@ sd_spinup_disk(struct scsi_disk *sdkp)
>> {
>> unsigned char cmd[10];
>> unsigned long spintime_expire = 0;
>> - int retries, spintime;
>> + int spintime;
>> unsigned int the_result;
>> struct scsi_sense_hdr sshdr;
>> int sense_valid = 0;
>> + struct scsi_failure failures[] = {
>> + {
>> + .sense = SCMD_FAILURE_SENSE_ANY,
>> + .asc = SCMD_FAILURE_ASC_ANY,
>> + .ascq = SCMD_FAILURE_ASCQ_ANY,
>> + .allowed = 3,
>> + .result = SAM_STAT_CHECK_CONDITION,
>> + },
>> + {
>> + /*
>> + * Retry scsi status and host errors that
>> return
>> + * failure in scsi_status_is_good.
>> + */
>> + .result = SAM_STAT_BUSY |
>> + SAM_STAT_RESERVATION_CONFLICT |
>> + SAM_STAT_TASK_SET_FULL |
>> + SAM_STAT_ACA_ACTIVE |
>> + SAM_STAT_TASK_ABORTED |
>
> I fail to understand how bitwise-or would work here. IIUC, this tries
> to replicate the logic to retry if (!scsi_status_is_good()). The result
> of this bitwise-or operation is 0x78, which matches all SAM_ codes
> except SAM_STAT_GOOD, SAM_STAT_CHECK_CONDITION and
> SAM_STAT_CONDITION_MET. SAM_STAT_CHECK_CONDITION is covered by the
> first failure. But unless I'm mistaken, we'd now retry on
> SAM_STAT_INTERMEDIATE, SAM_STAT_INTERMEDIATE_CONDITION_MET, and
> SAM_STAT_COMMAND_TERMINATED, on which the old code did not retry. Am I
> overlooking something?
I'm not sure what happened. For some reason I thought they were bitmaps.
Will fix.
>
> At least this deserves an in-depth comment; in general, as noted
> for patch 02/35, I find using bitwise or for SAM status counter-
> intuitive.
>
>> + DID_NO_CONNECT << 16,
>
> Shouldn't .allowed be set to 3 here? OTOH that would cause the number
Forgot the 3.
> of retries to add up to 6, see my reply to 22/35. But don't see what
> effect a failure with allowed = 0 would have.
>
>
> Regards
> Martin
>
next prev parent reply other threads:[~2022-09-29 16:48 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-29 2:53 [PATCH v2 00/35] Allow scsi_execute users to control retries Mike Christie
2022-09-29 2:53 ` [PATCH v2 01/35] scsi: Add helper to prep sense during error handling Mike Christie
2022-09-29 7:39 ` Christoph Hellwig
2022-09-30 0:05 ` Bart Van Assche
2022-09-29 2:53 ` [PATCH v2 02/35] scsi: Allow passthrough to override what errors to retry Mike Christie
2022-09-29 11:00 ` Martin Wilck
2022-09-29 16:39 ` michael.christie
2022-09-29 2:53 ` [PATCH v2 03/35] scsi: Add struct for args to execution functions Mike Christie
2022-09-29 17:02 ` Bart Van Assche
2022-09-29 20:24 ` Mike Christie
2022-09-29 20:29 ` Bart Van Assche
2022-09-30 0:12 ` Bart Van Assche
2022-09-30 2:43 ` Mike Christie
2022-09-30 17:29 ` Bart Van Assche
2022-09-29 2:53 ` [PATCH v2 04/35] scsi: Add scsi_failure field to scsi_exec_args Mike Christie
2022-09-29 2:53 ` [PATCH v2 05/35] scsi: libata: Convert to scsi_exec_req Mike Christie
2022-09-29 2:53 ` [PATCH v2 06/35] hwmon: drivetemp: " Mike Christie
2022-09-29 2:53 ` [PATCH v2 07/35] scsi: ch: " Mike Christie
2022-09-29 2:53 ` [PATCH v2 08/35] scsi: scsi_dh: " Mike Christie
2022-09-29 2:53 ` [PATCH v2 09/35] scsi: core: " Mike Christie
2022-09-29 2:53 ` [PATCH v2 10/35] scsi: spi: " Mike Christie
2022-09-29 2:53 ` [PATCH v2 11/35] scsi: sd: " Mike Christie
2022-09-29 2:53 ` [PATCH v2 12/35] scsi: zbc: " Mike Christie
2022-09-29 2:53 ` [PATCH v2 13/35] scsi: ses: " Mike Christie
2022-09-29 2:53 ` [PATCH v2 14/35] scsi: sr: " Mike Christie
2022-09-29 2:53 ` [PATCH v2 15/35] scsi: virtio_scsi: " Mike Christie
2022-09-29 2:53 ` [PATCH v2 16/35] scsi: target_core_pscsi: " Mike Christie
2022-09-29 2:53 ` [PATCH v2 17/35] scsi: ufshcd: " Mike Christie
2022-09-30 18:03 ` Bart Van Assche
2022-09-29 2:53 ` [PATCH v2 18/35] scsi: cxlflash: " Mike Christie
2022-09-29 2:53 ` [PATCH v2 19/35] scsi: Remove scsi_execute functions Mike Christie
2022-09-29 2:53 ` [PATCH v2 20/35] scsi: Have scsi-ml retry scsi_probe_lun errors Mike Christie
2022-09-29 2:53 ` [PATCH v2 21/35] scsi: retry INQUIRY after timeout Mike Christie
2022-09-29 13:49 ` Martin Wilck
2022-09-29 2:53 ` [PATCH v2 22/35] scsi: Have scsi-ml retry read_capacity_16 errors Mike Christie
2022-09-29 14:12 ` Martin Wilck
2022-09-29 2:53 ` [PATCH v2 23/35] scsi: Have scsi-ml retry sd_spinup_disk errors Mike Christie
2022-09-29 14:13 ` Martin Wilck
2022-09-29 16:47 ` michael.christie [this message]
2022-09-29 2:53 ` [PATCH v2 24/35] scsi: hp_sw: Have scsi-ml retry scsi_exec_req errors Mike Christie
2022-09-29 14:16 ` Martin Wilck
2022-09-29 2:53 ` [PATCH v2 25/35] scsi: rdac: Have scsi-ml retry send_mode_select errors Mike Christie
2022-09-29 2:53 ` [PATCH v2 26/35] scsi: spi: Have scsi-ml retry spi_execute errors Mike Christie
2022-09-29 2:53 ` [PATCH v2 27/35] scsi: sd: Have scsi-ml retry sd_sync_cache errors Mike Christie
2022-09-29 2:54 ` [PATCH v2 28/35] scsi: ch: Have scsi-ml retry ch_do_scsi errors Mike Christie
2022-09-29 2:54 ` [PATCH v2 29/35] scsi: Have scsi-ml retry scsi_mode_sense errors Mike Christie
2022-09-29 2:54 ` [PATCH v2 30/35] scsi: Have scsi-ml retry scsi_report_lun_scan errors Mike Christie
2022-09-29 2:54 ` [PATCH v2 31/35] scsi: sd: Have sd_pr_command retry UAs Mike Christie
2022-09-29 2:54 ` [PATCH v2 32/35] scsi: sd: Have scsi-ml retry read_capacity_10 errors Mike Christie
2022-09-29 2:54 ` [PATCH v2 33/35] scsi: ses: Have scsi-ml retry scsi_exec_req errors Mike Christie
2022-09-29 2:54 ` [PATCH v2 34/35] scsi: sr: Have scsi-ml retry get_sectorsize errors Mike Christie
2022-09-29 2:54 ` [PATCH v2 35/35] scsi: cxlflash: Have scsi-ml retry read_cap16 errors Mike Christie
2022-09-29 14:36 ` [PATCH v2 00/35] Allow scsi_execute users to control retries Martin Wilck
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=8a69a003-79bf-aceb-cea1-ab7d05363512@oracle.com \
--to=michael.christie@oracle.com \
--cc=bvanassche@acm.org \
--cc=hch@lst.de \
--cc=james.bottomley@hansenpartnership.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox