diff options
author | James Bottomley <james.bottomley@steeleye.com> | 2004-06-17 23:58:05 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2004-06-17 23:58:05 -0500 |
commit | f57d08d130ddc17432a19b22ea1be40a02f577d9 (patch) | |
tree | 4b94e013d8eddf4f73aa4c692ff9a008bb183fd9 /Documentation | |
parent | f0378b9dc202e055ecf40b99d3ed7835d53404aa (diff) | |
download | history-f57d08d130ddc17432a19b22ea1be40a02f577d9.tar.gz |
[PATCH] SCSI Flexible timout intfrastructure
The object of this infrastructure is to give HBAs early warning that
error handling is about to happen and also provide them with the
opportunity to do something about it.
It introduces the extra template callback:
eh_timed_out()
which scsi_times_out() will call if it is populated to notify the LLD
that an outstanding command took a timeout.
There are three possible returns:
EH_HANDLED: I've fixed the problem, please complete the command for me
(as soon as the timer fires, scsi_done will do nothing, so the timer
itself will call a special version of scsi_done that doesn't check the
timer).
EH_NOT_HANDLED: Invoke error recovery as normal
EH_RESET_TIMER: The command will complete, reset the timer to its
original value and start it ticking again.
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Based on work by Christoph Hellwig and Luben Tuikov
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/scsi/scsi_mid_low_api.txt | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/Documentation/scsi/scsi_mid_low_api.txt b/Documentation/scsi/scsi_mid_low_api.txt index eda7ce53db9d09..c3407f6693a25c 100644 --- a/Documentation/scsi/scsi_mid_low_api.txt +++ b/Documentation/scsi/scsi_mid_low_api.txt @@ -827,6 +827,7 @@ The interface functions are listed below in alphabetical order. Summary: bios_param - fetch head, sector, cylinder info for a disk detect - detects HBAs this driver wants to control + eh_timed_out - notify the host that a command timer expired eh_abort_handler - abort given command eh_bus_reset_handler - issue SCSI bus reset eh_device_reset_handler - issue SCSI device reset @@ -895,6 +896,32 @@ Details: /** + * eh_timed_out - The timer for the command has just fired + * @scp: identifies command timing out + * + * Returns: + * + * 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 + + * + * Locks: None held + * + * Calling context: interrupt + * + * Notes: This is to give the LLD an opportunity to do local recovery. + * This recovery is limited to determining if the outstanding command + * will ever complete. You may not abort and restart the command from + * this callback. + * + * Optionally defined in: LLD + **/ + int eh_timed_out(struct scsi_cmnd * scp) + + +/** * eh_abort_handler - abort command associated with scp * @scp: identifies command to be aborted * |