Commit d413da79 authored by Jeff Garzik's avatar Jeff Garzik

[libata] fix error recovery reference count

This bug could potentially lead to soft hangs (processes stuck in D
state) if an error occurred.

Yet another undocumented nuance of the ->eh_strategy_handler.

Thanks to excellent detective work by Brad Campbell tracking this down.
parent 72d7a036
...@@ -254,6 +254,12 @@ int ata_scsi_error(struct Scsi_Host *host) ...@@ -254,6 +254,12 @@ int ata_scsi_error(struct Scsi_Host *host)
ap = (struct ata_port *) &host->hostdata[0]; ap = (struct ata_port *) &host->hostdata[0];
ap->ops->eng_timeout(ap); ap->ops->eng_timeout(ap);
/* TODO: this is per-command; when queueing is supported
* this code will either change or move to a more
* appropriate place
*/
host->host_failed--;
DPRINTK("EXIT\n"); DPRINTK("EXIT\n");
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment