public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
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
> 


  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