[SCSI] ibmvscsi: Changeable queue depth
authorBrian King <brking@linux.vnet.ibm.com>
Tue, 29 May 2007 20:46:14 +0000 (15:46 -0500)
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>
Wed, 30 May 2007 03:52:31 +0000 (22:52 -0500)
Adds support for a changeable queue depth to ibmvscsi.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/ibmvscsi/ibmvscsi.c
drivers/scsi/ibmvscsi/ibmvscsi.h

index b10eefe735c5183da11ff341b138fe41186f2a8d..b580af95956bf79b64d26809a961fad799af40b2 100644 (file)
@@ -1375,6 +1375,23 @@ static int ibmvscsi_slave_configure(struct scsi_device *sdev)
        return 0;
 }
 
+/**
+ * ibmvscsi_change_queue_depth - Change the device's queue depth
+ * @sdev:      scsi device struct
+ * @qdepth:    depth to set
+ *
+ * Return value:
+ *     actual depth set
+ **/
+static int ibmvscsi_change_queue_depth(struct scsi_device *sdev, int qdepth)
+{
+       if (qdepth > IBMVSCSI_MAX_CMDS_PER_LUN)
+               qdepth = IBMVSCSI_MAX_CMDS_PER_LUN;
+
+       scsi_adjust_queue_depth(sdev, 0, qdepth);
+       return sdev->queue_depth;
+}
+
 /* ------------------------------------------------------------
  * sysfs attributes
  */
@@ -1521,6 +1538,7 @@ static struct scsi_host_template driver_template = {
        .eh_abort_handler = ibmvscsi_eh_abort_handler,
        .eh_device_reset_handler = ibmvscsi_eh_device_reset_handler,
        .slave_configure = ibmvscsi_slave_configure,
+       .change_queue_depth = ibmvscsi_change_queue_depth,
        .cmd_per_lun = 16,
        .can_queue = IBMVSCSI_MAX_REQUESTS_DEFAULT,
        .this_id = -1,
index 77cc1d40f5bbc9c794e233758a693097500ea7c3..727ca7c95926cec4886e8376dc45080a578c6855 100644 (file)
@@ -45,6 +45,7 @@ struct Scsi_Host;
 #define MAX_INDIRECT_BUFS 10
 
 #define IBMVSCSI_MAX_REQUESTS_DEFAULT 100
+#define IBMVSCSI_MAX_CMDS_PER_LUN 64
 
 /* ------------------------------------------------------------
  * Data Structures