diff options
author | Tejun Heo <htejun@gmail.com> | 2006-05-19 08:07:05 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-05-20 00:39:08 -0400 |
commit | f8bbfc247efb0e5fa69094614380768ce79afe17 (patch) | |
tree | 726b8eb9d41b5f7036c987b80282b90440a295ed /drivers/scsi/scsi_error.c | |
parent | a20f33ffde8ba5fb27666aa1e228a45b7e3b8dcb (diff) |
[PATCH] SCSI: make scsi_implement_eh() generic API for SCSI transports
libata implemented a feature to schedule EH without an associated EH
by manipulating shost->host_eh_scheduled in ata_scsi_schedule_eh()
directly. Move this function to scsi_error.c and rename it to
scsi_schedule_eh(). It is now an exported API for SCSI transports and
exported via new header file drivers/scsi/scsi_transport_api.h
This patch also de-export scsi_eh_wakeup() which was exported
specifically for ata_scsi_schedule_eh().
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/scsi/scsi_error.c')
-rw-r--r-- | drivers/scsi/scsi_error.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index 9ca71cbefce0..346ab72ebf86 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c | |||
@@ -56,7 +56,28 @@ void scsi_eh_wakeup(struct Scsi_Host *shost) | |||
56 | printk("Waking error handler thread\n")); | 56 | printk("Waking error handler thread\n")); |
57 | } | 57 | } |
58 | } | 58 | } |
59 | EXPORT_SYMBOL_GPL(scsi_eh_wakeup); | 59 | |
60 | /** | ||
61 | * scsi_schedule_eh - schedule EH for SCSI host | ||
62 | * @shost: SCSI host to invoke error handling on. | ||
63 | * | ||
64 | * Schedule SCSI EH without scmd. | ||
65 | **/ | ||
66 | void scsi_schedule_eh(struct Scsi_Host *shost) | ||
67 | { | ||
68 | unsigned long flags; | ||
69 | |||
70 | spin_lock_irqsave(shost->host_lock, flags); | ||
71 | |||
72 | if (scsi_host_set_state(shost, SHOST_RECOVERY) == 0 || | ||
73 | scsi_host_set_state(shost, SHOST_CANCEL_RECOVERY) == 0) { | ||
74 | shost->host_eh_scheduled++; | ||
75 | scsi_eh_wakeup(shost); | ||
76 | } | ||
77 | |||
78 | spin_unlock_irqrestore(shost->host_lock, flags); | ||
79 | } | ||
80 | EXPORT_SYMBOL_GPL(scsi_schedule_eh); | ||
60 | 81 | ||
61 | /** | 82 | /** |
62 | * scsi_eh_scmd_add - add scsi cmd to error handling. | 83 | * scsi_eh_scmd_add - add scsi cmd to error handling. |