linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/1] ibmvscsi: Changeable queue depth
@ 2007-05-29 18:00 Brian King
  0 siblings, 0 replies; 3+ messages in thread
From: Brian King @ 2007-05-29 18:00 UTC (permalink / raw)
  To: santil; +Cc: rcjenn, linux-scsi, brking


Adds support for a changeable queue depth to ibmvscsi.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---

 linux-2.6-bjking1/drivers/scsi/ibmvscsi/ibmvscsi.c |   15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff -puN drivers/scsi/ibmvscsi/ibmvscsi.c~ibmvscsi_change_q_depth drivers/scsi/ibmvscsi/ibmvscsi.c
--- linux-2.6/drivers/scsi/ibmvscsi/ibmvscsi.c~ibmvscsi_change_q_depth	2007-05-29 09:31:43.000000000 -0500
+++ linux-2.6-bjking1/drivers/scsi/ibmvscsi/ibmvscsi.c	2007-05-29 09:31:43.000000000 -0500
@@ -1375,6 +1375,20 @@ static int ibmvscsi_slave_configure(stru
 	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)
+{
+	scsi_adjust_queue_depth(sdev, 0, qdepth);
+	return sdev->queue_depth;
+}
+
 /* ------------------------------------------------------------
  * sysfs attributes
  */
@@ -1521,6 +1535,7 @@ static struct scsi_host_template driver_
 	.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,
_

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH 1/1] ibmvscsi: Changeable queue depth
       [not found] <11804616242477-patch-mail.ibm.com>
@ 2007-05-29 18:14 ` James Bottomley
  2007-05-29 20:46   ` Brian King
  0 siblings, 1 reply; 3+ messages in thread
From: James Bottomley @ 2007-05-29 18:14 UTC (permalink / raw)
  To: Brian King; +Cc: santil, rcjenn, linux-scsi

On Tue, 2007-05-29 at 13:00 -0500, Brian King wrote:
> Adds support for a changeable queue depth to ibmvscsi.
> 
> Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
> ---
> 
>  linux-2.6-bjking1/drivers/scsi/ibmvscsi/ibmvscsi.c |   15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff -puN drivers/scsi/ibmvscsi/ibmvscsi.c~ibmvscsi_change_q_depth drivers/scsi/ibmvscsi/ibmvscsi.c
> --- linux-2.6/drivers/scsi/ibmvscsi/ibmvscsi.c~ibmvscsi_change_q_depth	2007-05-29 09:31:43.000000000 -0500
> +++ linux-2.6-bjking1/drivers/scsi/ibmvscsi/ibmvscsi.c	2007-05-29 09:31:43.000000000 -0500
> @@ -1375,6 +1375,20 @@ static int ibmvscsi_slave_configure(stru
>  	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)
> +{
> +	scsi_adjust_queue_depth(sdev, 0, qdepth);

Don't you want to check this against some system limit ... or will the
driver cope just fine when the user sets it to machine infinity and we
diligently try blasting away at it through the queuecommand() routine?

The usual limit, if you have variable queues ... is the maximum the
device could ever accept ... although some people adjust that downwards
because of device starvation fears.

> +	return sdev->queue_depth;
> +}

James



^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 1/1] ibmvscsi: Changeable queue depth
  2007-05-29 18:14 ` [PATCH 1/1] ibmvscsi: Changeable queue depth James Bottomley
@ 2007-05-29 20:46   ` Brian King
  0 siblings, 0 replies; 3+ messages in thread
From: Brian King @ 2007-05-29 20:46 UTC (permalink / raw)
  To: James Bottomley; +Cc: santil, rcjenn, linux-scsi

Adds support for a changeable queue depth to ibmvscsi.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---

James Bottomley wrote:
> Don't you want to check this against some system limit ... or will the
> driver cope just fine when the user sets it to machine infinity and we
> diligently try blasting away at it through the queuecommand() routine?
> 
> The usual limit, if you have variable queues ... is the maximum the
> device could ever accept ... although some people adjust that downwards
> because of device starvation fears.

There isn't anything coming back from the VIO server to indicate what this
max value is for the LUN, so we have to use an arbitrary value. I chose 64
since its generally the max queue depth supported by a single disk supported
on pSeries. Here is an updated patch.

-Brian

---

 linux-2.6-bjking1/drivers/scsi/ibmvscsi/ibmvscsi.c |   18 ++++++++++++++++++
 linux-2.6-bjking1/drivers/scsi/ibmvscsi/ibmvscsi.h |    1 +
 2 files changed, 19 insertions(+)

diff -puN drivers/scsi/ibmvscsi/ibmvscsi.c~ibmvscsi_change_q_depth drivers/scsi/ibmvscsi/ibmvscsi.c
--- linux-2.6/drivers/scsi/ibmvscsi/ibmvscsi.c~ibmvscsi_change_q_depth	2007-05-29 12:57:20.000000000 -0500
+++ linux-2.6-bjking1/drivers/scsi/ibmvscsi/ibmvscsi.c	2007-05-29 15:27:23.000000000 -0500
@@ -1375,6 +1375,23 @@ static int ibmvscsi_slave_configure(stru
 	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_
 	.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,
diff -puN drivers/scsi/ibmvscsi/ibmvscsi.h~ibmvscsi_change_q_depth drivers/scsi/ibmvscsi/ibmvscsi.h
--- linux-2.6/drivers/scsi/ibmvscsi/ibmvscsi.h~ibmvscsi_change_q_depth	2007-05-29 15:25:24.000000000 -0500
+++ linux-2.6-bjking1/drivers/scsi/ibmvscsi/ibmvscsi.h	2007-05-29 15:29:11.000000000 -0500
@@ -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
_

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2007-05-29 20:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <11804616242477-patch-mail.ibm.com>
2007-05-29 18:14 ` [PATCH 1/1] ibmvscsi: Changeable queue depth James Bottomley
2007-05-29 20:46   ` Brian King
2007-05-29 18:00 Brian King

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).