scsi: split __scsi_queue_insert
authorChristoph Hellwig <hch@lst.de>
Thu, 23 Jan 2014 12:55:38 +0000 (13:55 +0100)
committerChristoph Hellwig <hch@lst.de>
Fri, 25 Jul 2014 11:38:35 +0000 (07:38 -0400)
Factor out a helper to set the _blocked values, which we'll reuse for the
blk-mq code path.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Webb Scales <webbnh@hp.com>
Acked-by: Jens Axboe <axboe@kernel.dk>
Tested-by: Bart Van Assche <bvanassche@acm.org>
Tested-by: Robert Elliott <elliott@hp.com>
drivers/scsi/scsi_lib.c

index 04c368470c8a725ec9249987071908bb5390817a..3ac677c48168678d8ee71c3a44ccb9ba03ad3e10 100644 (file)
@@ -75,28 +75,12 @@ struct kmem_cache *scsi_sdb_cache;
  */
 #define SCSI_QUEUE_DELAY       3
 
-/**
- * __scsi_queue_insert - private queue insertion
- * @cmd: The SCSI command being requeued
- * @reason:  The reason for the requeue
- * @unbusy: Whether the queue should be unbusied
- *
- * This is a private queue insertion.  The public interface
- * scsi_queue_insert() always assumes the queue should be unbusied
- * because it's always called before the completion.  This function is
- * for a requeue after completion, which should only occur in this
- * file.
- */
-static void __scsi_queue_insert(struct scsi_cmnd *cmd, int reason, int unbusy)
+static void
+scsi_set_blocked(struct scsi_cmnd *cmd, int reason)
 {
        struct Scsi_Host *host = cmd->device->host;
        struct scsi_device *device = cmd->device;
        struct scsi_target *starget = scsi_target(device);
-       struct request_queue *q = device->request_queue;
-       unsigned long flags;
-
-       SCSI_LOG_MLQUEUE(1, scmd_printk(KERN_INFO, cmd,
-               "Inserting command %p into mlqueue\n", cmd));
 
        /*
         * Set the appropriate busy bit for the device/host.
@@ -123,6 +107,30 @@ static void __scsi_queue_insert(struct scsi_cmnd *cmd, int reason, int unbusy)
                starget->target_blocked = starget->max_target_blocked;
                break;
        }
+}
+
+/**
+ * __scsi_queue_insert - private queue insertion
+ * @cmd: The SCSI command being requeued
+ * @reason:  The reason for the requeue
+ * @unbusy: Whether the queue should be unbusied
+ *
+ * This is a private queue insertion.  The public interface
+ * scsi_queue_insert() always assumes the queue should be unbusied
+ * because it's always called before the completion.  This function is
+ * for a requeue after completion, which should only occur in this
+ * file.
+ */
+static void __scsi_queue_insert(struct scsi_cmnd *cmd, int reason, int unbusy)
+{
+       struct scsi_device *device = cmd->device;
+       struct request_queue *q = device->request_queue;
+       unsigned long flags;
+
+       SCSI_LOG_MLQUEUE(1, scmd_printk(KERN_INFO, cmd,
+               "Inserting command %p into mlqueue\n", cmd));
+
+       scsi_set_blocked(cmd, reason);
 
        /*
         * Decrement the counters, since these commands are no longer