public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
From: Jack Wang <jinpu.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
To: David Dillow <dave-i1Mk8JYDVaaSihdK6806/g@public.gmane.org>,
	Roland Dreier <roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: linux-rdma <linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Sebastian Riemer
	<sebastian.riemer-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>,
	Bart Van Assche <bvanassche-HInyCGIudOg@public.gmane.org>,
	Jack Wang <xjtuwjp-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Subject: Re: [PATCHv2] IB/srp: add change_queue_depth and change_queue_type support
Date: Mon, 09 Sep 2013 14:12:31 +0200	[thread overview]
Message-ID: <522DBB2F.8080905@profitbricks.com> (raw)
In-Reply-To: <521DB28C.9020803-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>

On 08/28/2013 10:19 AM, Jack Wang wrote:
> Hi,
> 
> Below patch is new version which address comments from Bart.
> 

Hi Roland,

Could you included this in your tree or do you need me resend it?

Best regards,
Jack



> 
> From 62d87b4d546066b251e44a3cb468b16783df7ee4 Mon Sep 17 00:00:00 2001
> From: Jack Wang <jinpu.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
> Date: Mon, 26 Aug 2013 15:50:03 +0200
> Subject: [PATCH] IB/srp: add change_queue_depth/change_queue_type support
> 
> Currently, it's not possible to change queue depth for device
> behind SRP host. Sometimes, we need to adjust queue_depth for
> performance reason(eg storage busy, we need lower queue_depth
> to avoid running into SCSI error handler), so this patch add
> support for SRP driver.
> 
> Signed-off-by: Jack Wang <jinpu.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
> ---
>  drivers/infiniband/ulp/srp/ib_srp.c |   54
> +++++++++++++++++++++++++++++++++++
>  1 file changed, 54 insertions(+)
> 
> diff --git a/drivers/infiniband/ulp/srp/ib_srp.c
> b/drivers/infiniband/ulp/srp/ib_srp.c
> index 06a3e4b..2713e02 100644
> --- a/drivers/infiniband/ulp/srp/ib_srp.c
> +++ b/drivers/infiniband/ulp/srp/ib_srp.c
> @@ -47,6 +47,7 @@
>  #include <scsi/scsi.h>
>  #include <scsi/scsi_device.h>
>  #include <scsi/scsi_dbg.h>
> +#include <scsi/scsi_tcq.h>
>  #include <scsi/srp.h>
>  #include <scsi/scsi_transport_srp.h>
> 
> @@ -1875,6 +1876,57 @@ static int srp_cm_handler(struct ib_cm_id *cm_id,
> struct ib_cm_event *event)
>  	return 0;
>  }
> 
> +/**
> + * srp_change_queue_type - changing device queue tag type
> + * @sdev: scsi device struct
> + * @tag_type: requested tag type
> + *
> + * Returns queue tag type.
> + */
> +static int
> +srp_change_queue_type(struct scsi_device *sdev, int tag_type)
> +{
> +	if (sdev->tagged_supported) {
> +		scsi_set_tag_type(sdev, tag_type);
> +		if (tag_type)
> +			scsi_activate_tcq(sdev, sdev->queue_depth);
> +		else
> +			scsi_deactivate_tcq(sdev, sdev->queue_depth);
> +	} else
> +		tag_type = 0;
> +
> +	return tag_type;
> +}
> +
> +/**
> + * srp_change_queue_depth - setting device queue depth
> + * @sdev: scsi device struct
> + * @qdepth: requested queue depth
> + * @reason: SCSI_QDEPTH_DEFAULT/SCSI_QDEPTH_QFULL/SCSI_QDEPTH_RAMP_UP
> + * (see include/scsi/scsi_host.h for definition)
> + *
> + * Returns queue depth.
> + */
> +static int
> +srp_change_queue_depth(struct scsi_device *sdev, int qdepth, int reason)
> +{
> +	struct Scsi_Host *shost = sdev->host;
> +	int max_depth;
> +	if (reason == SCSI_QDEPTH_DEFAULT || reason == SCSI_QDEPTH_RAMP_UP) {
> +		max_depth = shost->can_queue;
> +		if (!sdev->tagged_supported)
> +			max_depth = 1;
> +		if (qdepth > max_depth)
> +			qdepth = max_depth;
> +		scsi_adjust_queue_depth(sdev, scsi_get_tag_type(sdev), qdepth);
> +	} else if (reason == SCSI_QDEPTH_QFULL)
> +		scsi_track_queue_full(sdev, qdepth);
> +	else
> +		return -EOPNOTSUPP;
> +
> +	return sdev->queue_depth;
> +}
> +
>  static int srp_send_tsk_mgmt(struct srp_target_port *target,
>  			     u64 req_tag, unsigned int lun, u8 func)
>  {
> @@ -2260,6 +2312,8 @@ static struct scsi_host_template srp_template = {
>  	.slave_configure		= srp_slave_configure,
>  	.info				= srp_target_info,
>  	.queuecommand			= srp_queuecommand,
> +	.change_queue_depth             = srp_change_queue_depth,
> +	.change_queue_type              = srp_change_queue_type,
>  	.eh_abort_handler		= srp_abort,
>  	.eh_device_reset_handler	= srp_reset_device,
>  	.eh_host_reset_handler		= srp_reset_host,
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2013-09-09 12:12 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-28  8:19 [PATCHv2] IB/srp: add change_queue_depth and change_queue_type support Jack Wang
     [not found] ` <521DB28C.9020803-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2013-08-30  9:51   ` Bart Van Assche
2013-09-09 12:12   ` Jack Wang [this message]
     [not found]     ` <522DBB2F.8080905-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2013-09-09 14:37       ` David Dillow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=522DBB2F.8080905@profitbricks.com \
    --to=jinpu.wang-eikl63zcoxah+58jc4qpia@public.gmane.org \
    --cc=bvanassche-HInyCGIudOg@public.gmane.org \
    --cc=dave-i1Mk8JYDVaaSihdK6806/g@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=sebastian.riemer-EIkl63zCoXaH+58JC4qpiA@public.gmane.org \
    --cc=xjtuwjp-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox