aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libata-eh.c
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2006-05-31 05:28:05 -0400
committerTejun Heo <htejun@gmail.com>2006-05-31 05:28:05 -0400
commit580b2102327ab8444af5bde4e70b50d268a1d558 (patch)
tree01389e898e09dbaddb06405b182116b9be0e6d59 /drivers/scsi/libata-eh.c
parent084fe639b81c4d418a2cf714acb0475e3713cb73 (diff)
[PATCH] libata-hp: implement SCSI part of hotplug
Implement SCSI part of hotplug. This must be done in a separate context as SCSI makes use of EH during probing. SCSI scan fails silently if EH is in progress. In such cases, libata pauses briefly and retries until every device is attached. Signed-off-by: Tejun Heo <htejun@gmail.com>
Diffstat (limited to 'drivers/scsi/libata-eh.c')
-rw-r--r--drivers/scsi/libata-eh.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/scsi/libata-eh.c b/drivers/scsi/libata-eh.c
index b53e2e7db498..733dfa532977 100644
--- a/drivers/scsi/libata-eh.c
+++ b/drivers/scsi/libata-eh.c
@@ -287,9 +287,13 @@ void ata_scsi_error(struct Scsi_Host *host)
287 /* clean up */ 287 /* clean up */
288 spin_lock_irqsave(hs_lock, flags); 288 spin_lock_irqsave(hs_lock, flags);
289 289
290 if (ap->flags & ATA_FLAG_SCSI_HOTPLUG)
291 queue_work(ata_aux_wq, &ap->hotplug_task);
292
290 if (ap->flags & ATA_FLAG_RECOVERED) 293 if (ap->flags & ATA_FLAG_RECOVERED)
291 ata_port_printk(ap, KERN_INFO, "EH complete\n"); 294 ata_port_printk(ap, KERN_INFO, "EH complete\n");
292 ap->flags &= ~ATA_FLAG_RECOVERED; 295
296 ap->flags &= ~(ATA_FLAG_SCSI_HOTPLUG | ATA_FLAG_RECOVERED);
293 297
294 /* tell wait_eh that we're done */ 298 /* tell wait_eh that we're done */
295 ap->flags &= ~ATA_FLAG_EH_IN_PROGRESS; 299 ap->flags &= ~ATA_FLAG_EH_IN_PROGRESS;