scsi: split __scsi_queue_insert
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>
This commit is contained in:
parent
6af7a4ffa2
commit
de3e8bf331
|
@ -75,28 +75,12 @@ struct kmem_cache *scsi_sdb_cache;
|
||||||
*/
|
*/
|
||||||
#define SCSI_QUEUE_DELAY 3
|
#define SCSI_QUEUE_DELAY 3
|
||||||
|
|
||||||
/**
|
static void
|
||||||
* __scsi_queue_insert - private queue insertion
|
scsi_set_blocked(struct scsi_cmnd *cmd, int reason)
|
||||||
* @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_Host *host = cmd->device->host;
|
struct Scsi_Host *host = cmd->device->host;
|
||||||
struct scsi_device *device = cmd->device;
|
struct scsi_device *device = cmd->device;
|
||||||
struct scsi_target *starget = scsi_target(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.
|
* 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;
|
starget->target_blocked = starget->max_target_blocked;
|
||||||
break;
|
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
|
* Decrement the counters, since these commands are no longer
|
||||||
|
|
Loading…
Reference in New Issue