diff options
author | James Bottomley <James.Bottomley@SteelEye.com> | 2005-06-20 08:11:09 -0400 |
---|---|---|
committer | Jens Axboe <axboe@suse.de> | 2005-06-20 08:11:09 -0400 |
commit | 994ca9a19616f0d4161a9e825f0835925d522426 (patch) | |
tree | 0998252ed375929dca468440b7486d4c1104757f /drivers/block | |
parent | f63eb21b4f32028755b6b9d47e5eb13c18ba0cae (diff) |
[PATCH] update blk_execute_rq to take an at_head parameter
Original From: Mike Christie <michaelc@cs.wisc.edu>
Modified to split out block changes (this patch) and SCSI pieces.
Signed-off-by: Jens Axboe <axboe@suse.de>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/ll_rw_blk.c | 7 | ||||
-rw-r--r-- | drivers/block/scsi_ioctl.c | 6 |
2 files changed, 7 insertions, 6 deletions
diff --git a/drivers/block/ll_rw_blk.c b/drivers/block/ll_rw_blk.c index 874e46fc3748..d260a2ce9a70 100644 --- a/drivers/block/ll_rw_blk.c +++ b/drivers/block/ll_rw_blk.c | |||
@@ -2269,13 +2269,14 @@ void blk_execute_rq_nowait(request_queue_t *q, struct gendisk *bd_disk, | |||
2269 | * @q: queue to insert the request in | 2269 | * @q: queue to insert the request in |
2270 | * @bd_disk: matching gendisk | 2270 | * @bd_disk: matching gendisk |
2271 | * @rq: request to insert | 2271 | * @rq: request to insert |
2272 | * @at_head: insert request at head or tail of queue | ||
2272 | * | 2273 | * |
2273 | * Description: | 2274 | * Description: |
2274 | * Insert a fully prepared request at the back of the io scheduler queue | 2275 | * Insert a fully prepared request at the back of the io scheduler queue |
2275 | * for execution. | 2276 | * for execution. |
2276 | */ | 2277 | */ |
2277 | int blk_execute_rq(request_queue_t *q, struct gendisk *bd_disk, | 2278 | int blk_execute_rq(request_queue_t *q, struct gendisk *bd_disk, |
2278 | struct request *rq) | 2279 | struct request *rq, int at_head) |
2279 | { | 2280 | { |
2280 | DECLARE_COMPLETION(wait); | 2281 | DECLARE_COMPLETION(wait); |
2281 | char sense[SCSI_SENSE_BUFFERSIZE]; | 2282 | char sense[SCSI_SENSE_BUFFERSIZE]; |
@@ -2294,7 +2295,7 @@ int blk_execute_rq(request_queue_t *q, struct gendisk *bd_disk, | |||
2294 | } | 2295 | } |
2295 | 2296 | ||
2296 | rq->waiting = &wait; | 2297 | rq->waiting = &wait; |
2297 | blk_execute_rq_nowait(q, bd_disk, rq, 0, blk_end_sync_rq); | 2298 | blk_execute_rq_nowait(q, bd_disk, rq, at_head, blk_end_sync_rq); |
2298 | wait_for_completion(&wait); | 2299 | wait_for_completion(&wait); |
2299 | rq->waiting = NULL; | 2300 | rq->waiting = NULL; |
2300 | 2301 | ||
@@ -2361,7 +2362,7 @@ int blkdev_scsi_issue_flush_fn(request_queue_t *q, struct gendisk *disk, | |||
2361 | rq->data_len = 0; | 2362 | rq->data_len = 0; |
2362 | rq->timeout = 60 * HZ; | 2363 | rq->timeout = 60 * HZ; |
2363 | 2364 | ||
2364 | ret = blk_execute_rq(q, disk, rq); | 2365 | ret = blk_execute_rq(q, disk, rq, 0); |
2365 | 2366 | ||
2366 | if (ret && error_sector) | 2367 | if (ret && error_sector) |
2367 | *error_sector = rq->sector; | 2368 | *error_sector = rq->sector; |
diff --git a/drivers/block/scsi_ioctl.c b/drivers/block/scsi_ioctl.c index 7717b76f7f20..abb2df249fd3 100644 --- a/drivers/block/scsi_ioctl.c +++ b/drivers/block/scsi_ioctl.c | |||
@@ -308,7 +308,7 @@ static int sg_io(struct file *file, request_queue_t *q, | |||
308 | * (if he doesn't check that is his problem). | 308 | * (if he doesn't check that is his problem). |
309 | * N.B. a non-zero SCSI status is _not_ necessarily an error. | 309 | * N.B. a non-zero SCSI status is _not_ necessarily an error. |
310 | */ | 310 | */ |
311 | blk_execute_rq(q, bd_disk, rq); | 311 | blk_execute_rq(q, bd_disk, rq, 0); |
312 | 312 | ||
313 | /* write to all output members */ | 313 | /* write to all output members */ |
314 | hdr->status = 0xff & rq->errors; | 314 | hdr->status = 0xff & rq->errors; |
@@ -420,7 +420,7 @@ static int sg_scsi_ioctl(struct file *file, request_queue_t *q, | |||
420 | rq->data_len = bytes; | 420 | rq->data_len = bytes; |
421 | rq->flags |= REQ_BLOCK_PC; | 421 | rq->flags |= REQ_BLOCK_PC; |
422 | 422 | ||
423 | blk_execute_rq(q, bd_disk, rq); | 423 | blk_execute_rq(q, bd_disk, rq, 0); |
424 | err = rq->errors & 0xff; /* only 8 bit SCSI status */ | 424 | err = rq->errors & 0xff; /* only 8 bit SCSI status */ |
425 | if (err) { | 425 | if (err) { |
426 | if (rq->sense_len && rq->sense) { | 426 | if (rq->sense_len && rq->sense) { |
@@ -573,7 +573,7 @@ int scsi_cmd_ioctl(struct file *file, struct gendisk *bd_disk, unsigned int cmd, | |||
573 | rq->cmd[0] = GPCMD_START_STOP_UNIT; | 573 | rq->cmd[0] = GPCMD_START_STOP_UNIT; |
574 | rq->cmd[4] = 0x02 + (close != 0); | 574 | rq->cmd[4] = 0x02 + (close != 0); |
575 | rq->cmd_len = 6; | 575 | rq->cmd_len = 6; |
576 | err = blk_execute_rq(q, bd_disk, rq); | 576 | err = blk_execute_rq(q, bd_disk, rq, 0); |
577 | blk_put_request(rq); | 577 | blk_put_request(rq); |
578 | break; | 578 | break; |
579 | default: | 579 | default: |