aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/libata-eh.c10
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