[SCSI] make scsi_requeue_request() use blk_requeue_request()
authorTejun Heo <htejun@gmail.com>
Sun, 24 Apr 2005 07:06:36 +0000 (02:06 -0500)
committerJames Bottomley <jejb@mulgrave.(none)>
Fri, 20 May 2005 17:53:29 +0000 (12:53 -0500)
scsi_requeue_request() used to use blk_insert_request() for requeueing
requests.  This depends on the unobvious behavior of
blk_insert_request() setting REQ_SPECIAL and REQ_SOFTBARRIER when
requeueing.  This patch makes scsi_queue_insert() use
blk_requeue_request().  As REQ_SPECIAL means special requests and
REQ_SOFTBARRIER is automatically handled by blk layer now, no flag
needs to be set.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/scsi_lib.c

index 47a4ad40bf4e4dae6aa5daa13fd98b92b857f905..0b33e4f1a51ec49d387c7a7ac7847f4aa147cd97 100644 (file)
@@ -485,8 +485,13 @@ static void scsi_run_queue(struct request_queue *q)
  */
 static void scsi_requeue_command(struct request_queue *q, struct scsi_cmnd *cmd)
 {
+       unsigned long flags;
+
        cmd->request->flags &= ~REQ_DONTPREP;
-       blk_insert_request(q, cmd->request, 1, cmd, 1);
+
+       spin_lock_irqsave(q->queue_lock, flags);
+       blk_requeue_request(q, cmd->request);
+       spin_unlock_irqrestore(q->queue_lock, flags);
 
        scsi_run_queue(q);
 }