diff options
| author | James Bottomley <jejb@titanic.(none)> | 2005-08-28 12:31:14 -0400 |
|---|---|---|
| committer | James Bottomley <jejb@titanic.(none)> | 2005-08-28 12:31:14 -0400 |
| commit | 33aa687db90dd8541bd5e9a762eebf880eaee767 (patch) | |
| tree | dac741e1f3f43a1de2433a21b874a093783717f3 /include | |
| parent | 1cf72699c1530c3e4ac3d58344f6a6a40a2f46d3 (diff) | |
[SCSI] convert SPI transport class to scsi_execute
This one's slightly more difficult. The transport class uses
REQ_FAILFAST, so another interface (scsi_execute) had to be invented to
take the extra flag. Also, the sense functions are shifted around to
allow spi_execute to place data directly into a struct scsi_sense_hdr.
With this change, there's probably a lot of unnecessary sense buffer
allocation going on which we can fix later.
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'include')
| -rw-r--r-- | include/scsi/scsi_device.h | 13 | ||||
| -rw-r--r-- | include/scsi/scsi_eh.h | 8 | ||||
| -rw-r--r-- | include/scsi/scsi_request.h | 4 |
3 files changed, 21 insertions, 4 deletions
diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index 9181068883ce..5ad08b70763c 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h | |||
| @@ -256,6 +256,19 @@ extern void int_to_scsilun(unsigned int, struct scsi_lun *); | |||
| 256 | extern const char *scsi_device_state_name(enum scsi_device_state); | 256 | extern const char *scsi_device_state_name(enum scsi_device_state); |
| 257 | extern int scsi_is_sdev_device(const struct device *); | 257 | extern int scsi_is_sdev_device(const struct device *); |
| 258 | extern int scsi_is_target_device(const struct device *); | 258 | extern int scsi_is_target_device(const struct device *); |
| 259 | extern int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd, | ||
| 260 | int data_direction, void *buffer, unsigned bufflen, | ||
| 261 | unsigned char *sense, int timeout, int retries, | ||
| 262 | int flag); | ||
| 263 | |||
| 264 | static inline int | ||
| 265 | scsi_execute_req(struct scsi_device *sdev, const unsigned char *cmd, | ||
| 266 | int data_direction, void *buffer, unsigned bufflen, | ||
| 267 | unsigned char *sense, int timeout, int retries) | ||
| 268 | { | ||
| 269 | return scsi_execute(sdev, cmd, data_direction, buffer, bufflen, sense, | ||
| 270 | timeout, retries, 0); | ||
| 271 | } | ||
| 259 | static inline int scsi_device_online(struct scsi_device *sdev) | 272 | static inline int scsi_device_online(struct scsi_device *sdev) |
| 260 | { | 273 | { |
| 261 | return sdev->sdev_state != SDEV_OFFLINE; | 274 | return sdev->sdev_state != SDEV_OFFLINE; |
diff --git a/include/scsi/scsi_eh.h b/include/scsi/scsi_eh.h index 80557f879e3e..b24d224281bd 100644 --- a/include/scsi/scsi_eh.h +++ b/include/scsi/scsi_eh.h | |||
| @@ -26,6 +26,14 @@ struct scsi_sense_hdr { /* See SPC-3 section 4.5 */ | |||
| 26 | u8 additional_length; /* always 0 for fixed sense format */ | 26 | u8 additional_length; /* always 0 for fixed sense format */ |
| 27 | }; | 27 | }; |
| 28 | 28 | ||
| 29 | static inline int scsi_sense_valid(struct scsi_sense_hdr *sshdr) | ||
| 30 | { | ||
| 31 | if (!sshdr) | ||
| 32 | return 0; | ||
| 33 | |||
| 34 | return (sshdr->response_code & 0x70) == 0x70; | ||
| 35 | } | ||
| 36 | |||
| 29 | 37 | ||
| 30 | extern void scsi_add_timer(struct scsi_cmnd *, int, | 38 | extern void scsi_add_timer(struct scsi_cmnd *, int, |
| 31 | void (*)(struct scsi_cmnd *)); | 39 | void (*)(struct scsi_cmnd *)); |
diff --git a/include/scsi/scsi_request.h b/include/scsi/scsi_request.h index f5dfdfec9fea..6a140020d7cb 100644 --- a/include/scsi/scsi_request.h +++ b/include/scsi/scsi_request.h | |||
| @@ -54,8 +54,4 @@ extern void scsi_do_req(struct scsi_request *, const void *cmnd, | |||
| 54 | void *buffer, unsigned bufflen, | 54 | void *buffer, unsigned bufflen, |
| 55 | void (*done) (struct scsi_cmnd *), | 55 | void (*done) (struct scsi_cmnd *), |
| 56 | int timeout, int retries); | 56 | int timeout, int retries); |
| 57 | extern int scsi_execute_req(struct scsi_device *sdev, unsigned char *cmd, | ||
| 58 | int data_direction, void *buffer, unsigned bufflen, | ||
| 59 | unsigned char *sense, int timeout, int retries); | ||
| 60 | |||
| 61 | #endif /* _SCSI_SCSI_REQUEST_H */ | 57 | #endif /* _SCSI_SCSI_REQUEST_H */ |
