aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/scsi_lib.c
diff options
context:
space:
mode:
authorJames Bottomley <jejb@titanic.(none)>2005-08-28 12:31:14 -0400
committerJames Bottomley <jejb@titanic.(none)>2005-08-28 12:31:14 -0400
commit33aa687db90dd8541bd5e9a762eebf880eaee767 (patch)
treedac741e1f3f43a1de2433a21b874a093783717f3 /drivers/scsi/scsi_lib.c
parent1cf72699c1530c3e4ac3d58344f6a6a40a2f46d3 (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.c13
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,
282EXPORT_SYMBOL(scsi_wait_req); 282EXPORT_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 **/
298int scsi_execute_req(struct scsi_device *sdev, unsigned char *cmd, 299int 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
331EXPORT_SYMBOL(scsi_execute_req); 332EXPORT_SYMBOL(scsi_execute);
332 333
333/* 334/*
334 * Function: scsi_init_cmd_errh() 335 * Function: scsi_init_cmd_errh()