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 /drivers/scsi/scsi_lib.c | |
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 'drivers/scsi/scsi_lib.c')
-rw-r--r-- | drivers/scsi/scsi_lib.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 3f3accd6cd4..42edf29223a 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
@@ -282,7 +282,7 @@ void scsi_wait_req(struct scsi_request *sreq, const void *cmnd, void *buffer, | |||
282 | EXPORT_SYMBOL(scsi_wait_req); | 282 | EXPORT_SYMBOL(scsi_wait_req); |
283 | 283 | ||
284 | /** | 284 | /** |
285 | * scsi_execute_req - insert request and wait for the result | 285 | * scsi_execute - insert request and wait for the result |
286 | * @sdev: scsi device | 286 | * @sdev: scsi device |
287 | * @cmd: scsi command | 287 | * @cmd: scsi command |
288 | * @data_direction: data direction | 288 | * @data_direction: data direction |
@@ -291,13 +291,14 @@ EXPORT_SYMBOL(scsi_wait_req); | |||
291 | * @sense: optional sense buffer | 291 | * @sense: optional sense buffer |
292 | * @timeout: request timeout in seconds | 292 | * @timeout: request timeout in seconds |
293 | * @retries: number of times to retry request | 293 | * @retries: number of times to retry request |
294 | * @flags: or into request flags; | ||
294 | * | 295 | * |
295 | * scsi_execute_req returns the req->errors value which is the | 296 | * scsi_execute_req returns the req->errors value which is the |
296 | * the scsi_cmnd result field. | 297 | * the scsi_cmnd result field. |
297 | **/ | 298 | **/ |
298 | int scsi_execute_req(struct scsi_device *sdev, unsigned char *cmd, | 299 | int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd, |
299 | int data_direction, void *buffer, unsigned bufflen, | 300 | int data_direction, void *buffer, unsigned bufflen, |
300 | unsigned char *sense, int timeout, int retries) | 301 | unsigned char *sense, int timeout, int retries, int flags) |
301 | { | 302 | { |
302 | struct request *req; | 303 | struct request *req; |
303 | int write = (data_direction == DMA_TO_DEVICE); | 304 | int write = (data_direction == DMA_TO_DEVICE); |
@@ -314,7 +315,7 @@ int scsi_execute_req(struct scsi_device *sdev, unsigned char *cmd, | |||
314 | req->sense = sense; | 315 | req->sense = sense; |
315 | req->sense_len = 0; | 316 | req->sense_len = 0; |
316 | req->timeout = timeout; | 317 | req->timeout = timeout; |
317 | req->flags |= REQ_BLOCK_PC | REQ_SPECIAL; | 318 | req->flags |= flags | REQ_BLOCK_PC | REQ_SPECIAL; |
318 | 319 | ||
319 | /* | 320 | /* |
320 | * head injection *required* here otherwise quiesce won't work | 321 | * head injection *required* here otherwise quiesce won't work |
@@ -328,7 +329,7 @@ int scsi_execute_req(struct scsi_device *sdev, unsigned char *cmd, | |||
328 | return ret; | 329 | return ret; |
329 | } | 330 | } |
330 | 331 | ||
331 | EXPORT_SYMBOL(scsi_execute_req); | 332 | EXPORT_SYMBOL(scsi_execute); |
332 | 333 | ||
333 | /* | 334 | /* |
334 | * Function: scsi_init_cmd_errh() | 335 | * Function: scsi_init_cmd_errh() |