diff options
author | James Smart <James.Smart@Emulex.Com> | 2006-03-13 08:28:57 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-03-13 08:58:58 -0600 |
commit | c829c394165f981d49f05a9be228404d7a9398d4 (patch) | |
tree | 649ca326052a4a35d31f150f274347ca9d38c678 /include | |
parent | ce313db240862d809c736c5b1dfc759817fc7ca9 (diff) | |
download | op-kernel-dev-c829c394165f981d49f05a9be228404d7a9398d4.zip op-kernel-dev-c829c394165f981d49f05a9be228404d7a9398d4.tar.gz |
[SCSI] FC transport : Avoid device offline cases by stalling aborts until device unblocked
This moves the eh_timed_out functionality from the scsi_host_template
to the transport_template. Given that this is now a transport function,
the EH_RESET_TIMER case no longer caps the timer reschedulings. The
transport guarantees that this is not an infinite condition.
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/scsi/scsi_host.h | 14 | ||||
-rw-r--r-- | include/scsi/scsi_transport.h | 11 |
2 files changed, 11 insertions, 14 deletions
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h index 8279929..a6cf3e5 100644 --- a/include/scsi/scsi_host.h +++ b/include/scsi/scsi_host.h @@ -147,20 +147,6 @@ struct scsi_host_template { int (* eh_host_reset_handler)(struct scsi_cmnd *); /* - * This is an optional routine to notify the host that the scsi - * timer just fired. The returns tell the timer routine what to - * do about this: - * - * EH_HANDLED: I fixed the error, please complete the command - * EH_RESET_TIMER: I need more time, reset the timer and - * begin counting again - * EH_NOT_HANDLED Begin normal error recovery - * - * Status: OPTIONAL - */ - enum scsi_eh_timer_return (* eh_timed_out)(struct scsi_cmnd *); - - /* * Before the mid layer attempts to scan for a new device where none * currently exists, it will call this entry in your driver. Should * your driver need to allocate any structs or perform any other init diff --git a/include/scsi/scsi_transport.h b/include/scsi/scsi_transport.h index e7b1054..b3657f1 100644 --- a/include/scsi/scsi_transport.h +++ b/include/scsi/scsi_transport.h @@ -48,6 +48,17 @@ struct scsi_transport_template { * True if the transport wants to use a host-based work-queue */ unsigned int create_work_queue : 1; + + /* + * This is an optional routine that allows the transport to become + * involved when a scsi io timer fires. The return value tells the + * timer routine how to finish the io timeout handling: + * EH_HANDLED: I fixed the error, please complete the command + * EH_RESET_TIMER: I need more time, reset the timer and + * begin counting again + * EH_NOT_HANDLED Begin normal error recovery + */ + enum scsi_eh_timer_return (* eh_timed_out)(struct scsi_cmnd *); }; #define transport_class_to_shost(tc) \ |