tree 0998252ed375929dca468440b7486d4c1104757f
parent f63eb21b4f32028755b6b9d47e5eb13c18ba0cae
author James Bottomley <[EMAIL PROTECTED]> Mon, 20 Jun 2005 14:11:09 +0200
committer Jens Axboe <[EMAIL PROTECTED]> Mon, 20 Jun 2005 14:11:09 +0200

[PATCH] update blk_execute_rq to take an at_head parameter

Original From: Mike Christie <[EMAIL PROTECTED]>

Modified to split out block changes (this patch) and SCSI pieces.

Signed-off-by: Jens Axboe <[EMAIL PROTECTED]>
Signed-off-by: James Bottomley <[EMAIL PROTECTED]>

 drivers/block/ll_rw_blk.c  |    7 ++++---
 drivers/block/scsi_ioctl.c |    6 +++---
 drivers/cdrom/cdrom.c      |    2 +-
 drivers/ide/ide-disk.c     |    2 +-
 include/linux/blkdev.h     |    4 ++--
 5 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/drivers/block/ll_rw_blk.c b/drivers/block/ll_rw_blk.c
--- 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
  * @q:         queue to insert the request in
  * @bd_disk:   matching gendisk
  * @rq:                request to insert
+ * @at_head:    insert request at head or tail of queue
  *
  * Description:
  *    Insert a fully prepared request at the back of the io scheduler queue
  *    for execution.
  */
 int blk_execute_rq(request_queue_t *q, struct gendisk *bd_disk,
-                  struct request *rq)
+                  struct request *rq, int at_head)
 {
        DECLARE_COMPLETION(wait);
        char sense[SCSI_SENSE_BUFFERSIZE];
@@ -2294,7 +2295,7 @@ int blk_execute_rq(request_queue_t *q, s
        }
 
        rq->waiting = &wait;
-       blk_execute_rq_nowait(q, bd_disk, rq, 0, blk_end_sync_rq);
+       blk_execute_rq_nowait(q, bd_disk, rq, at_head, blk_end_sync_rq);
        wait_for_completion(&wait);
        rq->waiting = NULL;
 
@@ -2361,7 +2362,7 @@ int blkdev_scsi_issue_flush_fn(request_q
        rq->data_len = 0;
        rq->timeout = 60 * HZ;
 
-       ret = blk_execute_rq(q, disk, rq);
+       ret = blk_execute_rq(q, disk, rq, 0);
 
        if (ret && error_sector)
                *error_sector = rq->sector;
diff --git a/drivers/block/scsi_ioctl.c b/drivers/block/scsi_ioctl.c
--- a/drivers/block/scsi_ioctl.c
+++ b/drivers/block/scsi_ioctl.c
@@ -308,7 +308,7 @@ static int sg_io(struct file *file, requ
         * (if he doesn't check that is his problem).
         * N.B. a non-zero SCSI status is _not_ necessarily an error.
         */
-       blk_execute_rq(q, bd_disk, rq);
+       blk_execute_rq(q, bd_disk, rq, 0);
 
        /* write to all output members */
        hdr->status = 0xff & rq->errors;
@@ -420,7 +420,7 @@ static int sg_scsi_ioctl(struct file *fi
        rq->data_len = bytes;
        rq->flags |= REQ_BLOCK_PC;
 
-       blk_execute_rq(q, bd_disk, rq);
+       blk_execute_rq(q, bd_disk, rq, 0);
        err = rq->errors & 0xff;        /* only 8 bit SCSI status */
        if (err) {
                if (rq->sense_len && rq->sense) {
@@ -573,7 +573,7 @@ int scsi_cmd_ioctl(struct file *file, st
                        rq->cmd[0] = GPCMD_START_STOP_UNIT;
                        rq->cmd[4] = 0x02 + (close != 0);
                        rq->cmd_len = 6;
-                       err = blk_execute_rq(q, bd_disk, rq);
+                       err = blk_execute_rq(q, bd_disk, rq, 0);
                        blk_put_request(rq);
                        break;
                default:
diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c
--- a/drivers/cdrom/cdrom.c
+++ b/drivers/cdrom/cdrom.c
@@ -2136,7 +2136,7 @@ static int cdrom_read_cdda_bpc(struct cd
                if (rq->bio)
                        blk_queue_bounce(q, &rq->bio);
 
-               if (blk_execute_rq(q, cdi->disk, rq)) {
+               if (blk_execute_rq(q, cdi->disk, rq, 0)) {
                        struct request_sense *s = rq->sense;
                        ret = -EIO;
                        cdi->last_sense = s->sense_key;
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
--- a/drivers/ide/ide-disk.c
+++ b/drivers/ide/ide-disk.c
@@ -750,7 +750,7 @@ static int idedisk_issue_flush(request_q
 
        idedisk_prepare_flush(q, rq);
 
-       ret = blk_execute_rq(q, disk, rq);
+       ret = blk_execute_rq(q, disk, rq, 0);
 
        /*
         * if we failed and caller wants error offset, get it
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -562,8 +562,8 @@ extern int blk_rq_map_user(request_queue
 extern int blk_rq_unmap_user(struct bio *, unsigned int);
 extern int blk_rq_map_kern(request_queue_t *, struct request *, void *, 
unsigned int, unsigned int);
 extern int blk_rq_map_user_iov(request_queue_t *, struct request *, struct 
sg_iovec *, int);
-extern int blk_execute_rq(request_queue_t *, struct gendisk *, struct request 
*);
-
+extern int blk_execute_rq(request_queue_t *, struct gendisk *,
+                         struct request *, int);
 static inline request_queue_t *bdev_get_queue(struct block_device *bdev)
 {
        return bdev->bd_disk->queue;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to