| From fe2c4d018fc6127610fef677e020b3bb41cfaaaf Mon Sep 17 00:00:00 2001 |
| From: Tejun Heo <tj@kernel.org> |
| Date: Wed, 8 Jul 2009 12:16:37 +0900 |
| Subject: libata: fix follow-up SRST failure path |
| |
| From: Tejun Heo <tj@kernel.org> |
| |
| commit fe2c4d018fc6127610fef677e020b3bb41cfaaaf upstream. |
| |
| 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> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/ata/libata-eh.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| --- a/drivers/ata/libata-eh.c |
| +++ b/drivers/ata/libata-eh.c |
| @@ -2517,6 +2517,10 @@ int ata_eh_reset(struct ata_link *link, |
| |
| 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) |