]> err.no Git - linux-2.6/blobdiff - drivers/scsi/scsi_error.c
[PATCH] ahci: convert to new probing mechanism and add hotplug support
[linux-2.6] / drivers / scsi / scsi_error.c
index 9ca71cbefce0bb4125afccc5778f8b25ea0a4f30..346ab72ebf86e2ba7b8b438edb0e60fb230c75d3 100644 (file)
@@ -56,7 +56,28 @@ void scsi_eh_wakeup(struct Scsi_Host *shost)
                                printk("Waking error handler thread\n"));
        }
 }
-EXPORT_SYMBOL_GPL(scsi_eh_wakeup);
+
+/**
+ * scsi_schedule_eh - schedule EH for SCSI host
+ * @shost:     SCSI host to invoke error handling on.
+ *
+ * Schedule SCSI EH without scmd.
+ **/
+void scsi_schedule_eh(struct Scsi_Host *shost)
+{
+       unsigned long flags;
+
+       spin_lock_irqsave(shost->host_lock, flags);
+
+       if (scsi_host_set_state(shost, SHOST_RECOVERY) == 0 ||
+           scsi_host_set_state(shost, SHOST_CANCEL_RECOVERY) == 0) {
+               shost->host_eh_scheduled++;
+               scsi_eh_wakeup(shost);
+       }
+
+       spin_unlock_irqrestore(shost->host_lock, flags);
+}
+EXPORT_SYMBOL_GPL(scsi_schedule_eh);
 
 /**
  * scsi_eh_scmd_add - add scsi cmd to error handling.