--- linux/drivers/ata/libata-eh.c.orig 2012-04-27 13:17:35.000000000 -0400 +++ linux/drivers/ata/libata-eh.c 2012-05-01 22:40:00.182425015 -0400 @@ -2122,7 +2122,8 @@ if (qc->flags & ATA_QCFLAG_IO || (!(qc->err_mask & AC_ERR_INVALID) && qc->err_mask != AC_ERR_DEV)) - qc->flags |= ATA_QCFLAG_RETRY; + if (!(qc->err_mask & AC_ERR_MEDIA)) + qc->flags |= ATA_QCFLAG_RETRY; /* accumulate error info */ ehc->i.dev = qc->dev;