04_scsi_blk_insert_request_no_requeue.patch

        blk_insert_request() has a unobivous feature of requeuing a
        request setting REQ_SPECIAL|REQ_SOFTBARRIER.  SCSI midlayer
        was the only user and as previous patches removed the usage,
        remove the feature from blk_insert_request().  Only special
        requests should be queued with blk_insert_request().  All
        requeueing should go through blk_requeue_request().

Signed-off-by: Tejun Heo <[EMAIL PROTECTED]>

 drivers/block/ll_rw_blk.c |   20 ++++++--------------
 drivers/block/paride/pd.c |    2 +-
 drivers/block/sx8.c       |    4 ++--
 drivers/scsi/scsi_lib.c   |    2 +-
 include/linux/blkdev.h    |    2 +-
 5 files changed, 11 insertions(+), 19 deletions(-)

Index: scsi-reqfn-export/drivers/block/ll_rw_blk.c
===================================================================
--- scsi-reqfn-export.orig/drivers/block/ll_rw_blk.c    2005-04-11 
12:25:15.000000000 +0900
+++ scsi-reqfn-export/drivers/block/ll_rw_blk.c 2005-04-11 12:27:08.000000000 
+0900
@@ -2028,7 +2028,6 @@ EXPORT_SYMBOL(blk_requeue_request);
  * @rq:                request to be inserted
  * @at_head:   insert request at head or tail of queue
  * @data:      private data
- * @reinsert:  true if request it a reinsertion of previously processed one
  *
  * Description:
  *    Many block devices need to execute commands asynchronously, so they don't
@@ -2043,8 +2042,9 @@ EXPORT_SYMBOL(blk_requeue_request);
  *    host that is unable to accept a particular command.
  */
 void blk_insert_request(request_queue_t *q, struct request *rq,
-                       int at_head, void *data, int reinsert)
+                       int at_head, void *data)
 {
+       int where = at_head ? ELEVATOR_INSERT_FRONT : ELEVATOR_INSERT_BACK;
        unsigned long flags;
 
        /*
@@ -2061,20 +2061,12 @@ void blk_insert_request(request_queue_t 
        /*
         * If command is tagged, release the tag
         */
-       if (reinsert)
-               blk_requeue_request(q, rq);
-       else {
-               int where = ELEVATOR_INSERT_BACK;
+       if (blk_rq_tagged(rq))
+               blk_queue_end_tag(q, rq);
 
-               if (at_head)
-                       where = ELEVATOR_INSERT_FRONT;
+       drive_stat_acct(rq, rq->nr_sectors, 1);
+       __elv_add_request(q, rq, where, 0);
 
-               if (blk_rq_tagged(rq))
-                       blk_queue_end_tag(q, rq);
-
-               drive_stat_acct(rq, rq->nr_sectors, 1);
-               __elv_add_request(q, rq, where, 0);
-       }
        if (blk_queue_plugged(q))
                __generic_unplug_device(q);
        else
Index: scsi-reqfn-export/drivers/block/paride/pd.c
===================================================================
--- scsi-reqfn-export.orig/drivers/block/paride/pd.c    2005-04-11 
12:25:15.000000000 +0900
+++ scsi-reqfn-export/drivers/block/paride/pd.c 2005-04-11 12:27:08.000000000 
+0900
@@ -723,7 +723,7 @@ static int pd_special_command(struct pd_
        rq.ref_count = 1;
        rq.waiting = &wait;
        rq.end_io = blk_end_sync_rq;
-       blk_insert_request(disk->gd->queue, &rq, 0, func, 0);
+       blk_insert_request(disk->gd->queue, &rq, 0, func);
        wait_for_completion(&wait);
        rq.waiting = NULL;
        if (rq.errors)
Index: scsi-reqfn-export/drivers/block/sx8.c
===================================================================
--- scsi-reqfn-export.orig/drivers/block/sx8.c  2005-04-11 12:25:15.000000000 
+0900
+++ scsi-reqfn-export/drivers/block/sx8.c       2005-04-11 12:27:08.000000000 
+0900
@@ -614,7 +614,7 @@ static int carm_array_info (struct carm_
        spin_unlock_irq(&host->lock);
 
        DPRINTK("blk_insert_request, tag == %u\n", idx);
-       blk_insert_request(host->oob_q, crq->rq, 1, crq, 0);
+       blk_insert_request(host->oob_q, crq->rq, 1, crq);
 
        return 0;
 
@@ -653,7 +653,7 @@ static int carm_send_special (struct car
        crq->msg_bucket = (u32) rc;
 
        DPRINTK("blk_insert_request, tag == %u\n", idx);
-       blk_insert_request(host->oob_q, crq->rq, 1, crq, 0);
+       blk_insert_request(host->oob_q, crq->rq, 1, crq);
 
        return 0;
 }
Index: scsi-reqfn-export/drivers/scsi/scsi_lib.c
===================================================================
--- scsi-reqfn-export.orig/drivers/scsi/scsi_lib.c      2005-04-11 
12:27:08.000000000 +0900
+++ scsi-reqfn-export/drivers/scsi/scsi_lib.c   2005-04-11 12:27:08.000000000 
+0900
@@ -92,7 +92,7 @@ int scsi_insert_special_req(struct scsi_
         */
        sreq->sr_request->flags &= ~REQ_DONTPREP;
        blk_insert_request(sreq->sr_device->request_queue, sreq->sr_request,
-                          at_head, sreq, 0);
+                          at_head, sreq);
        return 0;
 }
 
Index: scsi-reqfn-export/include/linux/blkdev.h
===================================================================
--- scsi-reqfn-export.orig/include/linux/blkdev.h       2005-04-11 
12:25:15.000000000 +0900
+++ scsi-reqfn-export/include/linux/blkdev.h    2005-04-11 12:27:08.000000000 
+0900
@@ -541,7 +541,7 @@ extern void blk_end_sync_rq(struct reque
 extern void blk_attempt_remerge(request_queue_t *, struct request *);
 extern void __blk_attempt_remerge(request_queue_t *, struct request *);
 extern struct request *blk_get_request(request_queue_t *, int, int);
-extern void blk_insert_request(request_queue_t *, struct request *, int, void 
*, int);
+extern void blk_insert_request(request_queue_t *, struct request *, int, void 
*);
 extern void blk_requeue_request(request_queue_t *, struct request *);
 extern void blk_plug_device(request_queue_t *);
 extern int blk_remove_plug(request_queue_t *);

-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to