diff options
author | Mike Christie <michaelc@cs.wisc.edu> | 2008-02-29 19:25:19 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-04-07 13:15:41 -0400 |
commit | 30bd7df8ced23eefec87a5cda96dc99b002ed9da (patch) | |
tree | 80702b8ba0454540cc7ea19cfe49871192ab860c /include/scsi | |
parent | f7441a791aeaeac2e1f1f71b485d1372016f9285 (diff) |
[SCSI] scsi_error: add target reset handler
The problem is that serveral drivers are sending a target reset from the
device reset handler, and if we have multiple devices a target reset gets
sent for each device when only one would be sufficient. And if we do a target
reset it affects all the commands on the target so the device reset handler
code only cleaning up one devices's commands makes programming the driver a
little more difficult than it should be.
This patch adds a target reset handler, which drivers can use to send
a target reset. If successful it cleans up the commands for a devices
accessed through that starget.
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'include/scsi')
-rw-r--r-- | include/scsi/scsi_eh.h | 1 | ||||
-rw-r--r-- | include/scsi/scsi_host.h | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/include/scsi/scsi_eh.h b/include/scsi/scsi_eh.h index 25071d5d9bf8..37a7614f62f4 100644 --- a/include/scsi/scsi_eh.h +++ b/include/scsi/scsi_eh.h | |||
@@ -64,6 +64,7 @@ extern int scsi_get_sense_info_fld(const u8 * sense_buffer, int sb_len, | |||
64 | #define SCSI_TRY_RESET_DEVICE 1 | 64 | #define SCSI_TRY_RESET_DEVICE 1 |
65 | #define SCSI_TRY_RESET_BUS 2 | 65 | #define SCSI_TRY_RESET_BUS 2 |
66 | #define SCSI_TRY_RESET_HOST 3 | 66 | #define SCSI_TRY_RESET_HOST 3 |
67 | #define SCSI_TRY_RESET_TARGET 4 | ||
67 | 68 | ||
68 | extern int scsi_reset_provider(struct scsi_device *, int); | 69 | extern int scsi_reset_provider(struct scsi_device *, int); |
69 | 70 | ||
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h index 530ff4c553f8..49132862bfaa 100644 --- a/include/scsi/scsi_host.h +++ b/include/scsi/scsi_host.h | |||
@@ -172,6 +172,7 @@ struct scsi_host_template { | |||
172 | */ | 172 | */ |
173 | int (* eh_abort_handler)(struct scsi_cmnd *); | 173 | int (* eh_abort_handler)(struct scsi_cmnd *); |
174 | int (* eh_device_reset_handler)(struct scsi_cmnd *); | 174 | int (* eh_device_reset_handler)(struct scsi_cmnd *); |
175 | int (* eh_target_reset_handler)(struct scsi_cmnd *); | ||
175 | int (* eh_bus_reset_handler)(struct scsi_cmnd *); | 176 | int (* eh_bus_reset_handler)(struct scsi_cmnd *); |
176 | int (* eh_host_reset_handler)(struct scsi_cmnd *); | 177 | int (* eh_host_reset_handler)(struct scsi_cmnd *); |
177 | 178 | ||