Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4e57c517 authored by Tejun Heo's avatar Tejun Heo Committed by Jeff Garzik
Browse files

libata: schedule probing after SError access failure during autopsy



If SError isn't accessible, EH can't tell whether hotplug has happened
or not.  Report SError read failure with AC_ERR_OTHER and schedule
probing with hardreset.  This will be mainly useful for PMPs.

Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent fccb6ea5
Loading
Loading
Loading
Loading
+5 −1
Original line number Original line Diff line number Diff line
@@ -1478,8 +1478,12 @@ static void ata_eh_autopsy(struct ata_port *ap)
	if (rc == 0) {
	if (rc == 0) {
		ehc->i.serror |= serror;
		ehc->i.serror |= serror;
		ata_eh_analyze_serror(ap);
		ata_eh_analyze_serror(ap);
	} else if (rc != -EOPNOTSUPP)
	} else if (rc != -EOPNOTSUPP) {
		/* SError read failed, force hardreset and probing */
		ata_ehi_schedule_probe(&ehc->i);
		ehc->i.action |= ATA_EH_HARDRESET;
		ehc->i.action |= ATA_EH_HARDRESET;
		ehc->i.err_mask |= AC_ERR_OTHER;
	}


	/* analyze NCQ failure */
	/* analyze NCQ failure */
	ata_eh_analyze_ncq_error(ap);
	ata_eh_analyze_ncq_error(ap);