summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2009-07-08 12:16:37 +0900
committerJeff Garzik <jgarzik@redhat.com>2009-07-14 22:41:28 -0400
commitfe2c4d018fc6127610fef677e020b3bb41cfaaaf (patch)
treece6bfcc0a34066c246667a31bf9f1d5f9538f651 /drivers
parent6847e154e3cd74fca6084124c097980a7634285a (diff)
downloadkernel-crypto-fe2c4d018fc6127610fef677e020b3bb41cfaaaf.tar.gz
kernel-crypto-fe2c4d018fc6127610fef677e020b3bb41cfaaaf.tar.xz
kernel-crypto-fe2c4d018fc6127610fef677e020b3bb41cfaaaf.zip
libata: fix follow-up SRST failure path
ata_eh_reset() was missing error return handling after follow-up SRST allowing EH to continue the normal probing path after reset failure. This was discovered while testing new WD 2TB drives which take longer than 10 secs to spin up and cause the first follow-up SRST to time out. Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ata/libata-eh.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index fa22f94ca41..1a07c061f64 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -2517,6 +2517,10 @@ int ata_eh_reset(struct ata_link *link, int classify,
ata_eh_about_to_do(link, NULL, ATA_EH_RESET);
rc = ata_do_reset(link, reset, classes, deadline, true);
+ if (rc) {
+ failed_link = link;
+ goto fail;
+ }
}
} else {
if (verbose)