libata: fix follow-up SRST failure path
authorTejun Heo <tj@kernel.org>
Wed, 8 Jul 2009 03:16:37 +0000 (12:16 +0900)
committerJeff Garzik <jgarzik@redhat.com>
Wed, 15 Jul 2009 02:41:28 +0000 (22:41 -0400)
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>
drivers/ata/libata-eh.c

index fa22f94ca4150247b39a0e26fa7541d4cbee4ba4..1a07c061f644f37d76e7efe831a028ff6b8c1953 100644 (file)
@@ -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)