diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/libata-eh.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/scsi/libata-eh.c b/drivers/scsi/libata-eh.c index 7244caff13a0..750e734d1c09 100644 --- a/drivers/scsi/libata-eh.c +++ b/drivers/scsi/libata-eh.c | |||
@@ -1169,9 +1169,6 @@ static void ata_eh_autopsy(struct ata_port *ap) | |||
1169 | /* inherit upper level err_mask */ | 1169 | /* inherit upper level err_mask */ |
1170 | qc->err_mask |= ehc->i.err_mask; | 1170 | qc->err_mask |= ehc->i.err_mask; |
1171 | 1171 | ||
1172 | if (qc->err_mask & AC_ERR_TIMEOUT) | ||
1173 | action |= ATA_EH_SOFTRESET; | ||
1174 | |||
1175 | /* analyze TF */ | 1172 | /* analyze TF */ |
1176 | action |= ata_eh_analyze_tf(qc, &qc->result_tf); | 1173 | action |= ata_eh_analyze_tf(qc, &qc->result_tf); |
1177 | 1174 | ||
@@ -1201,9 +1198,14 @@ static void ata_eh_autopsy(struct ata_port *ap) | |||
1201 | if (failed_dev) | 1198 | if (failed_dev) |
1202 | action |= ata_eh_speed_down(failed_dev, is_io, all_err_mask); | 1199 | action |= ata_eh_speed_down(failed_dev, is_io, all_err_mask); |
1203 | 1200 | ||
1204 | if (all_err_mask) | 1201 | /* enforce default EH actions */ |
1202 | if (ap->flags & ATA_FLAG_FROZEN || | ||
1203 | all_err_mask & (AC_ERR_HSM | AC_ERR_TIMEOUT)) | ||
1204 | action |= ATA_EH_SOFTRESET; | ||
1205 | else if (all_err_mask) | ||
1205 | action |= ATA_EH_REVALIDATE; | 1206 | action |= ATA_EH_REVALIDATE; |
1206 | 1207 | ||
1208 | /* record autopsy result */ | ||
1207 | ehc->i.dev = failed_dev; | 1209 | ehc->i.dev = failed_dev; |
1208 | ehc->i.action = action; | 1210 | ehc->i.action = action; |
1209 | 1211 | ||