scsi: drop reason argument from ->change_queue_depth

Drop the now unused reason argument from the ->change_queue_depth method.
Also add a return value to scsi_adjust_queue_depth, and rename it to
scsi_change_queue_depth now that it can be used as the default
->change_queue_depth implementation.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Reviewed-by: Hannes Reinecke <hare@suse.de>
This commit is contained in:
Christoph Hellwig
2014-11-13 15:08:42 +01:00
parent 1e6f241604
commit db5ed4dfd5
73 changed files with 155 additions and 412 deletions

View File

@@ -742,30 +742,18 @@ void scsi_finish_command(struct scsi_cmnd *cmd)
}
/**
* scsi_adjust_queue_depth - Let low level drivers change a device's queue depth
* scsi_change_queue_depth - change a device's queue depth
* @sdev: SCSI Device in question
* @tags: Number of tags allowed if tagged queueing enabled,
* or number of commands the low level driver can
* queue up in non-tagged mode (as per cmd_per_lun).
* @depth: number of commands allowed to be queued to the driver
*
* Returns: Nothing
*
* Lock Status: None held on entry
*
* Notes: Low level drivers may call this at any time and we will do
* the right thing depending on whether or not the device is
* currently active and whether or not it even has the
* command blocks built yet.
* Sets the device queue depth and returns the new value.
*/
void scsi_adjust_queue_depth(struct scsi_device *sdev, int tags)
int scsi_change_queue_depth(struct scsi_device *sdev, int depth)
{
unsigned long flags;
/*
* refuse to set tagged depth to an unworkable size
*/
if (tags <= 0)
return;
if (depth <= 0)
goto out;
spin_lock_irqsave(sdev->request_queue->queue_lock, flags);
@@ -780,15 +768,17 @@ void scsi_adjust_queue_depth(struct scsi_device *sdev, int tags)
*/
if (!shost_use_blk_mq(sdev->host) && !sdev->host->bqt) {
if (blk_queue_tagged(sdev->request_queue) &&
blk_queue_resize_tags(sdev->request_queue, tags) != 0)
goto out;
blk_queue_resize_tags(sdev->request_queue, depth) != 0)
goto out_unlock;
}
sdev->queue_depth = tags;
out:
sdev->queue_depth = depth;
out_unlock:
spin_unlock_irqrestore(sdev->request_queue->queue_lock, flags);
out:
return sdev->queue_depth;
}
EXPORT_SYMBOL(scsi_adjust_queue_depth);
EXPORT_SYMBOL(scsi_change_queue_depth);
/**
* scsi_track_queue_full - track QUEUE_FULL events to adjust queue depth
@@ -833,12 +823,11 @@ int scsi_track_queue_full(struct scsi_device *sdev, int depth)
if (sdev->last_queue_full_depth < 8) {
/* Drop back to untagged */
scsi_set_tag_type(sdev, 0);
scsi_adjust_queue_depth(sdev, sdev->host->cmd_per_lun);
scsi_change_queue_depth(sdev, sdev->host->cmd_per_lun);
return -1;
}
scsi_adjust_queue_depth(sdev, depth);
return depth;
return scsi_change_queue_depth(sdev, depth);
}
EXPORT_SYMBOL(scsi_track_queue_full);