summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/hpsa.c
diff options
context:
space:
mode:
authorDon Brace <don.brace@pmcs.com>2015-01-23 23:41:30 +0100
committerJames Bottomley <JBottomley@Parallels.com>2015-02-02 18:57:36 +0100
commit7c0a0229bda26478f1fb15a2fa444b7ed3eac541 (patch)
treecf09297d9abf5eed49987ef7f01a43eff0b6198a /drivers/scsi/hpsa.c
parenthpsa: change how SA controllers are reset (diff)
downloadlinux-7c0a0229bda26478f1fb15a2fa444b7ed3eac541.tar.xz
linux-7c0a0229bda26478f1fb15a2fa444b7ed3eac541.zip
hpsa: correct change_queue_depth
We change drive queue depths to match drive reported queue depths. The name of the SML function was changed from scsi_adjust_queue_depth changed to scsi_change_queue_depth. Reviewed-by: Scott Teel <scott.teel@pmcs.com> Signed-off-by: Don Brace <don.brace@pmcs.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to '')
-rw-r--r--drivers/scsi/hpsa.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
index 371d0a81d535..7dfe8293c374 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -217,6 +217,7 @@ static int hpsa_scsi_queue_command(struct Scsi_Host *h, struct scsi_cmnd *cmd);
static void hpsa_scan_start(struct Scsi_Host *);
static int hpsa_scan_finished(struct Scsi_Host *sh,
unsigned long elapsed_time);
+static int hpsa_change_queue_depth(struct scsi_device *sdev, int qdepth);
static int hpsa_eh_device_reset_handler(struct scsi_cmnd *scsicmd);
static int hpsa_eh_abort_handler(struct scsi_cmnd *scsicmd);
@@ -672,7 +673,7 @@ static struct scsi_host_template hpsa_driver_template = {
.queuecommand = hpsa_scsi_queue_command,
.scan_start = hpsa_scan_start,
.scan_finished = hpsa_scan_finished,
- .change_queue_depth = scsi_change_queue_depth,
+ .change_queue_depth = hpsa_change_queue_depth,
.this_id = -1,
.use_clustering = ENABLE_CLUSTERING,
.eh_abort_handler = hpsa_eh_abort_handler,
@@ -4007,6 +4008,19 @@ static void hpsa_scan_start(struct Scsi_Host *sh)
spin_unlock_irqrestore(&h->scan_lock, flags);
}
+static int hpsa_change_queue_depth(struct scsi_device *sdev, int qdepth)
+{
+ struct ctlr_info *h = sdev_to_hba(sdev);
+
+ if (qdepth < 1)
+ qdepth = 1;
+ else
+ if (qdepth > h->nr_cmds)
+ qdepth = h->nr_cmds;
+ scsi_change_queue_depth(sdev, qdepth);
+ return sdev->queue_depth;
+}
+
static int hpsa_scan_finished(struct Scsi_Host *sh,
unsigned long elapsed_time)
{