aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libata-scsi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/libata-scsi.c')
-rw-r--r--drivers/scsi/libata-scsi.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/scsi/libata-scsi.c b/drivers/scsi/libata-scsi.c
index 2d328b3..3a4f40b 100644
--- a/drivers/scsi/libata-scsi.c
+++ b/drivers/scsi/libata-scsi.c
@@ -735,6 +735,11 @@ int ata_scsi_error(struct Scsi_Host *host)
DPRINTK("ENTER\n");
+ spin_lock_irqsave(&ap->host_set->lock, flags);
+ assert(!(ap->flags & ATA_FLAG_IN_EH));
+ ap->flags |= ATA_FLAG_IN_EH;
+ spin_unlock_irqrestore(&ap->host_set->lock, flags);
+
ap = (struct ata_port *) &host->hostdata[0];
ap->ops->eng_timeout(ap);
@@ -742,6 +747,10 @@ int ata_scsi_error(struct Scsi_Host *host)
scsi_eh_flush_done_q(&ap->eh_done_q);
+ spin_lock_irqsave(&ap->host_set->lock, flags);
+ ap->flags &= ~ATA_FLAG_IN_EH;
+ spin_unlock_irqrestore(&ap->host_set->lock, flags);
+
DPRINTK("EXIT\n");
return 0;
}