|
@@ -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.
|