mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 16:29:59 +00:00
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
1 changed files with 26 additions and 18 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue