Patchwork When a disk wakes up from sleep, ensure that the command is retried by SCSI EH.

login
register
mail settings
Submitter Gwendal Grignou
Date Aug. 7, 2009, 11:17 p.m.
Message ID <1249687069-31011-1-git-send-email-gwendal@google.com>
Download mbox | patch
Permalink /patch/30991/
State Not Applicable
Delegated to: David Miller
Headers show

Comments

Gwendal Grignou - Aug. 7, 2009, 11:17 p.m.
Without this fix, ATA passthrough commands are not resend to the drive, and no
error is signalled to the caller because:
- allowed retry count is 1
- ata_eh_qc_complete fill the sense data, so result is valid
- sense data is filled with untouched ATA registers.

Signed-off-by: Gwendal Grignou <gwendal@google.com>
---
 drivers/ata/libata-eh.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
Tejun Heo - Aug. 7, 2009, 11:23 p.m.
Gwendal Grignou wrote:
> Without this fix, ATA passthrough commands are not resend to the drive, and no
> error is signalled to the caller because:
> - allowed retry count is 1
> - ata_eh_qc_complete fill the sense data, so result is valid
> - sense data is filled with untouched ATA registers.
> 
> Signed-off-by: Gwendal Grignou <gwendal@google.com>

Acked-by: Tejun Heo <tj@kernel.org>
Gwendal Grignou - April 22, 2010, 5:43 p.m.
Just looking into 2.6.33 code, and I did not find this patch. Is there
anything I should do to have it merge?

Thanks,
Gwendal.

On Fri, Aug 7, 2009 at 4:23 PM, Tejun Heo <tj@kernel.org> wrote:
> Gwendal Grignou wrote:
>> Without this fix, ATA passthrough commands are not resend to the drive, and no
>> error is signalled to the caller because:
>> - allowed retry count is 1
>> - ata_eh_qc_complete fill the sense data, so result is valid
>> - sense data is filled with untouched ATA registers.
>>
>> Signed-off-by: Gwendal Grignou <gwendal@google.com>
>
> Acked-by: Tejun Heo <tj@kernel.org>
>
> --
> tejun
>
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tejun Heo - April 22, 2010, 5:48 p.m.
Hello,

On 04/22/2010 07:43 PM, Gwendal Grignou wrote:
> Just looking into 2.6.33 code, and I did not find this patch. Is there
> anything I should do to have it merge?

I think Jeff just hasn't come around yet.  Please wait a bit more for
Jeff's "applied" mail.  If it doesn't happen in a week or so, pinging
him again would be a good idea.
Gwendal Grignou - Oct. 2, 2013, 6:22 p.m.
Tejun Heo <tj <at> kernel.org> writes:

> 
> Hello,
> 
> On 04/22/2010 07:43 PM, Gwendal Grignou wrote:
> > Just looking into 2.6.33 code, and I did not find this patch. Is there
> > anything I should do to have it merge?
> 
> I think Jeff just hasn't come around yet.  Please wait a bit more for
> Jeff's "applied" mail.  If it doesn't happen in a week or so, pinging
> him again would be a good idea.
> 


Ping, years later! The patch still applies to 3.12.0-rc3.

Gwendal.

--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 79711b6..202da9c 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -1183,14 +1183,14 @@  void ata_eh_qc_complete(struct ata_queued_cmd *qc)
  *	should be retried.  To be used from EH.
  *
  *	SCSI midlayer limits the number of retries to scmd->allowed.
- *	scmd->retries is decremented for commands which get retried
+ *	scmd->allowed is incremented for commands which get retried
  *	due to unrelated failures (qc->err_mask is zero).
  */
 void ata_eh_qc_retry(struct ata_queued_cmd *qc)
 {
 	struct scsi_cmnd *scmd = qc->scsicmd;
-	if (!qc->err_mask && scmd->retries)
-		scmd->retries--;
+	if (!qc->err_mask)
+		scmd->allowed++;
 	__ata_eh_qc_complete(qc);
 }