|
@@ -2237,12 +2237,16 @@ static void ata_eh_link_autopsy(struct ata_link *link)
|
|
|
if (qc->err_mask & ~AC_ERR_OTHER)
|
|
|
qc->err_mask &= ~AC_ERR_OTHER;
|
|
|
|
|
|
- /* SENSE_VALID trumps dev/unknown error and revalidation */
|
|
|
+ /*
|
|
|
+ * SENSE_VALID trumps dev/unknown error and revalidation. Upper
|
|
|
+ * layers will determine whether the command is worth retrying
|
|
|
+ * based on the sense data and device class/type. Otherwise,
|
|
|
+ * determine directly if the command is worth retrying using its
|
|
|
+ * error mask and flags.
|
|
|
+ */
|
|
|
if (qc->flags & ATA_QCFLAG_SENSE_VALID)
|
|
|
qc->err_mask &= ~(AC_ERR_DEV | AC_ERR_OTHER);
|
|
|
-
|
|
|
- /* determine whether the command is worth retrying */
|
|
|
- if (ata_eh_worth_retry(qc))
|
|
|
+ else if (ata_eh_worth_retry(qc))
|
|
|
qc->flags |= ATA_QCFLAG_RETRY;
|
|
|
|
|
|
/* accumulate error info */
|