From 8df0920c7ec2e25bd5596c57ced6c2f8241e7713 Mon Sep 17 00:00:00 2001 From: Tejun Heo Date: Wed, 25 May 2011 12:23:56 +0200 Subject: [PATCH] --- yaml --- r: 258414 b: refs/heads/master c: 8ea7645c5a949f9d0ea86edc0778713b5e63ab74 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/ata/libata-eh.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 219eed3456ca..26ad9ef1880c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5b933e6340ac652fb1800480744ea8c9fa591bbf +refs/heads/master: 8ea7645c5a949f9d0ea86edc0778713b5e63ab74 diff --git a/trunk/drivers/ata/libata-eh.c b/trunk/drivers/ata/libata-eh.c index 16fa45755c18..ed16fbedaabd 100644 --- a/trunk/drivers/ata/libata-eh.c +++ b/trunk/drivers/ata/libata-eh.c @@ -2883,8 +2883,17 @@ int ata_eh_reset(struct ata_link *link, int classify, sata_scr_read(link, SCR_STATUS, &sstatus)) rc = -ERESTART; - if (rc == -ERESTART || try >= max_tries) + if (rc == -ERESTART || try >= max_tries) { + /* + * Thaw host port even if reset failed, so that the port + * can be retried on the next phy event. This risks + * repeated EH runs but seems to be a better tradeoff than + * shutting down a port after a botched hotplug attempt. + */ + if (ata_is_host_link(link)) + ata_eh_thaw_port(ap); goto out; + } now = jiffies; if (time_before(now, deadline)) {