aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ata/libata-eh.c2
-rw-r--r--drivers/scsi/scsi_error.c4
2 files changed, 4 insertions, 2 deletions
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 961acc788f44..91a9e6af2ec4 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -606,7 +606,7 @@ void ata_scsi_error(struct Scsi_Host *host)
606 ata_scsi_port_error_handler(host, ap); 606 ata_scsi_port_error_handler(host, ap);
607 607
608 /* finish or retry handled scmd's and clean up */ 608 /* finish or retry handled scmd's and clean up */
609 WARN_ON(host->host_failed || !list_empty(&eh_work_q)); 609 WARN_ON(!list_empty(&eh_work_q));
610 610
611 DPRINTK("EXIT\n"); 611 DPRINTK("EXIT\n");
612} 612}
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 984ddcb4786d..1b9c049bd5c5 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -1127,7 +1127,6 @@ static int scsi_eh_action(struct scsi_cmnd *scmd, int rtn)
1127 */ 1127 */
1128void scsi_eh_finish_cmd(struct scsi_cmnd *scmd, struct list_head *done_q) 1128void scsi_eh_finish_cmd(struct scsi_cmnd *scmd, struct list_head *done_q)
1129{ 1129{
1130 scmd->device->host->host_failed--;
1131 scmd->eh_eflags = 0; 1130 scmd->eh_eflags = 0;
1132 list_move_tail(&scmd->eh_entry, done_q); 1131 list_move_tail(&scmd->eh_entry, done_q);
1133} 1132}
@@ -2226,6 +2225,9 @@ int scsi_error_handler(void *data)
2226 else 2225 else
2227 scsi_unjam_host(shost); 2226 scsi_unjam_host(shost);
2228 2227
2228 /* All scmds have been handled */
2229 shost->host_failed = 0;
2230
2229 /* 2231 /*
2230 * Note - if the above fails completely, the action is to take 2232 * Note - if the above fails completely, the action is to take
2231 * individual devices offline and flush the queue of any 2233 * individual devices offline and flush the queue of any