diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/ata/libata-eh.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index a5a8f8453061..e7e2ba24ce66 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c | |||
@@ -1478,8 +1478,12 @@ static void ata_eh_autopsy(struct ata_port *ap) | |||
1478 | if (rc == 0) { | 1478 | if (rc == 0) { |
1479 | ehc->i.serror |= serror; | 1479 | ehc->i.serror |= serror; |
1480 | ata_eh_analyze_serror(ap); | 1480 | ata_eh_analyze_serror(ap); |
1481 | } else if (rc != -EOPNOTSUPP) | 1481 | } else if (rc != -EOPNOTSUPP) { |
1482 | /* SError read failed, force hardreset and probing */ | ||
1483 | ata_ehi_schedule_probe(&ehc->i); | ||
1482 | ehc->i.action |= ATA_EH_HARDRESET; | 1484 | ehc->i.action |= ATA_EH_HARDRESET; |
1485 | ehc->i.err_mask |= AC_ERR_OTHER; | ||
1486 | } | ||
1483 | 1487 | ||
1484 | /* analyze NCQ failure */ | 1488 | /* analyze NCQ failure */ |
1485 | ata_eh_analyze_ncq_error(ap); | 1489 | ata_eh_analyze_ncq_error(ap); |