All of lore.kernel.org
 help / color / mirror / Atom feed
* tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision3
       [not found] <1094927874.25583811.1459257571936.JavaMail.zimbra@redhat.com>
@ 2016-03-29 14:42 ` Laurence Oberman
  2016-03-30  5:05   ` Bart Van Assche
  0 siblings, 1 reply; 16+ messages in thread
From: Laurence Oberman @ 2016-03-29 14:42 UTC (permalink / raw)
  To: Bart Van Assche, linux-scsi

Hello Bart,

I have been using this jammer functionality to continue testing the SCSI F/C drivers and recovery for over a year now.
Any chance you would agree to ack this so I can get it in now.
I last posted to the list last March and it was not picked up.

I did look into moving this to upper layers but I find I use it primarily for fiber channel target testing.
Attempting to add this functionality to upper layers led to complexities and this is very solid.

This Patch diff against 4.5

I use target LIO for all my storage array test targets and customer problem resolution here at Red Hat.
This patch resulted from a requirement to mimic behavior of an expensive hardware jammer for a customer.
I have used this for some time with good success to simulate and reproduce latency and slow drain fabric issues and
for testing and validating error handling behavior
 in the Emulex, Qlogic and other F/C drivers.

Works by checking new parameter jam_host if its >= 0 and matches vha->host_no , jamming is enabled when jam_host >=0
If parameter set to -1 (default) no jamming is enabled. 

Tested by: Laurence Oberman <loberman@redhat.com>
Signed-off-by: Laurence Oberman <loberman@redhat.com>

diff -Nurp linux-4.5.orig/Documentation/scsi/tcm_qla2xxx.txt linux-4.5/Documentation/scsi/tcm_qla2xxx.txt
--- linux-4.5.orig/Documentation/scsi/tcm_qla2xxx.txt	1969-12-31 19:00:00.000000000 -0500
+++ linux-4.5/Documentation/scsi/tcm_qla2xxx.txt	2016-03-29 10:08:57.455761389 -0400
@@ -0,0 +1,31 @@
+tcm_qla2xxx jammer parameter usage
+----------------------------------
+There is now a new module parameter added to the tcm_qla2xx module
+parm:           jam_host:Host to jam >=0 Enable jammer (int)
+
+Use this parameter to control the discarding of SCSI commands to a selected
+host.
+This may be useful for testing error handling and simulating slow drain
+and other fabric issues.
+
+Any value >=0 that matches a fc_host # will discard the commands for that host.
+Reset back to -1 to stop the jamming.
+
+Enable host 6 to be jammed
+echo 6 > /sys/module/tcm_qla2xxx/parameters/jam_host
+
+Disable jamming on host 6
+echo -1 > /sys/module/tcm_qla2xxx/parameters/jam_host
+
+Usage example script:
+
+#!/bin/bash
+sleep_time=120  ### Time to jam for
+echo 6 >  /sys/module/tcm_qla2xxx/parameters/jam_host
+host=`cat /sys/module/tcm_qla2xxx/parameters/jam_host`
+echo "We start to discard commands on SCSI host $host"
+logger "Jammer started"
+sleep $sleep_time
+echo -1 >  /sys/module/tcm_qla2xxx/parameters/jam_host
+echo "We stopped the jammer"
+logger "Jammer stopped"
diff -Nurp linux-4.5.orig/drivers/scsi/qla2xxx/tcm_qla2xxx.c linux-4.5/drivers/scsi/qla2xxx/tcm_qla2xxx.c
--- linux-4.5.orig/drivers/scsi/qla2xxx/tcm_qla2xxx.c	2016-03-14 00:28:54.000000000 -0400
+++ linux-4.5/drivers/scsi/qla2xxx/tcm_qla2xxx.c	2016-03-29 10:10:09.677298099 -0400
@@ -48,6 +48,10 @@
 #include "qla_target.h"
 #include "tcm_qla2xxx.h"
 
+int jam_host = -1;
+module_param(jam_host, int, 0644);
+MODULE_PARM_DESC(jam_host, "Host to jam >=0 Enable jammer");
+
 static struct workqueue_struct *tcm_qla2xxx_free_wq;
 static struct workqueue_struct *tcm_qla2xxx_cmd_wq;
 
@@ -477,6 +481,11 @@ static int tcm_qla2xxx_handle_cmd(scsi_q
 		return -EINVAL;
 	}
 
+	if (unlikely(vha->host_no == jam_host)) {
+		/* return, and dont run target_submit_cmd,discarding command */
+		return 0;
+	}
+
 	cmd->vha->tgt_counters.qla_core_sbt_cmd++;
 	return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
 				cmd->unpacked_lun, data_length, fcp_task_attr,
@@ -1967,6 +1976,7 @@ static void tcm_qla2xxx_deregister_confi
 static int __init tcm_qla2xxx_init(void)
 {
 	int ret;
+	jam_host = -1;
 
 	ret = tcm_qla2xxx_register_configfs();
 	if (ret < 0)


Laurence Oberman
Principal Software Maintenance Engineer
Red Hat Global Support Services


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

* Re: tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision3
  2016-03-29 14:42 ` tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision3 Laurence Oberman
@ 2016-03-30  5:05   ` Bart Van Assche
  2016-03-31  5:34     ` Nicholas A. Bellinger
  0 siblings, 1 reply; 16+ messages in thread
From: Bart Van Assche @ 2016-03-30  5:05 UTC (permalink / raw)
  To: Laurence Oberman, linux-scsi; +Cc: Nicholas A. Bellinger

On 03/29/16 07:42, Laurence Oberman wrote:
> I have been using this jammer functionality to continue testing the SCSI F/C drivers and recovery for over a year now.
> Any chance you would agree to ack this so I can get it in now.
> I last posted to the list last March and it was not picked up.
>
> I did look into moving this to upper layers but I find I use it primarily for fiber channel target testing.
> Attempting to add this functionality to upper layers led to complexities and this is very solid.
>
> This Patch diff against 4.5
>
> I use target LIO for all my storage array test targets and customer problem resolution here at Red Hat.
> This patch resulted from a requirement to mimic behavior of an expensive hardware jammer for a customer.
> I have used this for some time with good success to simulate and reproduce latency and slow drain fabric issues and
> for testing and validating error handling behavior
>   in the Emulex, Qlogic and other F/C drivers.
>
> Works by checking new parameter jam_host if its >= 0 and matches vha->host_no , jamming is enabled when jam_host >=0
> If parameter set to -1 (default) no jamming is enabled.

Hello Laurence,

Nic Bellinger is the maintainer of LIO so my recommendation is to ask 
Nic first about his opinion (I have CC'd Nic). I'm not sure what Nic 
thinks about this but in my opinion such functionality belongs in the 
target core instead of in a target driver. But please wait until Nic has 
provided his opinion before spending more time on this. The mailing list 
for SCSI target patches is target-devel@vger.kernel.org.

Bart.

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

* Re: tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision3
  2016-03-30  5:05   ` Bart Van Assche
@ 2016-03-31  5:34     ` Nicholas A. Bellinger
  2016-04-01  0:20       ` Himanshu Madhani
  0 siblings, 1 reply; 16+ messages in thread
From: Nicholas A. Bellinger @ 2016-03-31  5:34 UTC (permalink / raw)
  To: Bart Van Assche
  Cc: Laurence Oberman, linux-scsi, target-devel, Himanshu Madhani, Quinn Tran

(Adding target-devel + Qlogic target folks)

On Tue, 2016-03-29 at 22:05 -0700, Bart Van Assche wrote:
> On 03/29/16 07:42, Laurence Oberman wrote:
> > I have been using this jammer functionality to continue testing the SCSI F/C drivers and recovery for over a year now.
> > Any chance you would agree to ack this so I can get it in now.
> > I last posted to the list last March and it was not picked up.
> >
> > I did look into moving this to upper layers but I find I use it primarily for fiber channel target testing.
> > Attempting to add this functionality to upper layers led to complexities and this is very solid.
> >
> > This Patch diff against 4.5
> >
> > I use target LIO for all my storage array test targets and customer problem resolution here at Red Hat.
> > This patch resulted from a requirement to mimic behavior of an expensive hardware jammer for a customer.
> > I have used this for some time with good success to simulate and reproduce latency and slow drain fabric issues and
> > for testing and validating error handling behavior
> >   in the Emulex, Qlogic and other F/C drivers.
> >
> > Works by checking new parameter jam_host if its >= 0 and matches vha->host_no , jamming is enabled when jam_host >=0
> > If parameter set to -1 (default) no jamming is enabled.
> 
> Hello Laurence,
> 
> Nic Bellinger is the maintainer of LIO so my recommendation is to ask 
> Nic first about his opinion (I have CC'd Nic). I'm not sure what Nic 
> thinks about this but in my opinion such functionality belongs in the 
> target core instead of in a target driver. But please wait until Nic has 
> provided his opinion before spending more time on this. The mailing list 
> for SCSI target patches is target-devel@vger.kernel.org.
> 

So really it's Himanshu's + Quinn's call if they would like to include
something like this in mainline.

If so, then I'd prefer to do it with a per tcm_qla2xxx_tpg endpoint
attribute instead a new module parameter, and add a new kernel config
option (CONFIG_TCM_QLA2XXX_DEBUG) to disable (by default) so end users
don't inadvertently play with it via targetcli + friends.

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

* Re: tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision3
  2016-03-31  5:34     ` Nicholas A. Bellinger
@ 2016-04-01  0:20       ` Himanshu Madhani
  2016-04-01  0:55         ` Laurence Oberman
  2016-04-01 18:15         ` Laurence Oberman
  0 siblings, 2 replies; 16+ messages in thread
From: Himanshu Madhani @ 2016-04-01  0:20 UTC (permalink / raw)
  To: Nicholas A. Bellinger, Bart Van Assche
  Cc: Laurence Oberman, linux-scsi, target-devel, Quinn Tran

Hi Nic, Laurence, 



On 3/30/16, 10:34 PM, "Nicholas A. Bellinger" <nab@linux-iscsi.org> wrote:

>(Adding target-devel + Qlogic target folks)
>
>On Tue, 2016-03-29 at 22:05 -0700, Bart Van Assche wrote:
>> On 03/29/16 07:42, Laurence Oberman wrote:
>> > I have been using this jammer functionality to continue testing the SCSI F/C drivers and recovery for over a year now.
>> > Any chance you would agree to ack this so I can get it in now.
>> > I last posted to the list last March and it was not picked up.
>> >
>> > I did look into moving this to upper layers but I find I use it primarily for fiber channel target testing.
>> > Attempting to add this functionality to upper layers led to complexities and this is very solid.
>> >
>> > This Patch diff against 4.5
>> >
>> > I use target LIO for all my storage array test targets and customer problem resolution here at Red Hat.
>> > This patch resulted from a requirement to mimic behavior of an expensive hardware jammer for a customer.
>> > I have used this for some time with good success to simulate and reproduce latency and slow drain fabric issues and
>> > for testing and validating error handling behavior
>> >   in the Emulex, Qlogic and other F/C drivers.
>> >
>> > Works by checking new parameter jam_host if its >= 0 and matches vha->host_no , jamming is enabled when jam_host >=0
>> > If parameter set to -1 (default) no jamming is enabled.
>> 
>> Hello Laurence,
>> 
>> Nic Bellinger is the maintainer of LIO so my recommendation is to ask 
>> Nic first about his opinion (I have CC'd Nic). I'm not sure what Nic 
>> thinks about this but in my opinion such functionality belongs in the 
>> target core instead of in a target driver. But please wait until Nic has 
>> provided his opinion before spending more time on this. The mailing list 
>> for SCSI target patches is target-devel@vger.kernel.org.
>> 
>
>So really it's Himanshu's + Quinn's call if they would like to include
>something like this in mainline.
>
>If so, then I'd prefer to do it with a per tcm_qla2xxx_tpg endpoint
>attribute instead a new module parameter, and add a new kernel config
>option (CONFIG_TCM_QLA2XXX_DEBUG) to disable (by default) so end users
>don't inadvertently play with it via targetcli + friends.
>

I agree here with Nic. The patch does provides benefit and is good addition,
but we don’t want to enable it by default.

Laurence, 

Would you be kind to rework patch with suggested changes from Nic and post it. 

Thanks, 
Himanshu

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

* Re: tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision3
  2016-04-01  0:20       ` Himanshu Madhani
@ 2016-04-01  0:55         ` Laurence Oberman
  2016-04-01 18:15         ` Laurence Oberman
  1 sibling, 0 replies; 16+ messages in thread
From: Laurence Oberman @ 2016-04-01  0:55 UTC (permalink / raw)
  To: Himanshu Madhani
  Cc: Nicholas A. Bellinger, Bart Van Assche, linux-scsi, target-devel,
	Quinn Tran

Hello Himanshu

Thanks, I will rework and post back to the thread.

Thank you

Laurence Oberman
Principal Software Maintenance Engineer
Red Hat Global Support Services

----- Original Message -----
From: "Himanshu Madhani" <himanshu.madhani@qlogic.com>
To: "Nicholas A. Bellinger" <nab@linux-iscsi.org>, "Bart Van Assche" <bart.vanassche@sandisk.com>
Cc: "Laurence Oberman" <loberman@redhat.com>, "linux-scsi" <linux-scsi@vger.kernel.org>, "target-devel" <target-devel@vger.kernel.org>, "Quinn Tran" <quinn.tran@qlogic.com>
Sent: Thursday, March 31, 2016 8:20:56 PM
Subject: Re: tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision3

Hi Nic, Laurence, 



On 3/30/16, 10:34 PM, "Nicholas A. Bellinger" <nab@linux-iscsi.org> wrote:

>(Adding target-devel + Qlogic target folks)
>
>On Tue, 2016-03-29 at 22:05 -0700, Bart Van Assche wrote:
>> On 03/29/16 07:42, Laurence Oberman wrote:
>> > I have been using this jammer functionality to continue testing the SCSI F/C drivers and recovery for over a year now.
>> > Any chance you would agree to ack this so I can get it in now.
>> > I last posted to the list last March and it was not picked up.
>> >
>> > I did look into moving this to upper layers but I find I use it primarily for fiber channel target testing.
>> > Attempting to add this functionality to upper layers led to complexities and this is very solid.
>> >
>> > This Patch diff against 4.5
>> >
>> > I use target LIO for all my storage array test targets and customer problem resolution here at Red Hat.
>> > This patch resulted from a requirement to mimic behavior of an expensive hardware jammer for a customer.
>> > I have used this for some time with good success to simulate and reproduce latency and slow drain fabric issues and
>> > for testing and validating error handling behavior
>> >   in the Emulex, Qlogic and other F/C drivers.
>> >
>> > Works by checking new parameter jam_host if its >= 0 and matches vha->host_no , jamming is enabled when jam_host >=0
>> > If parameter set to -1 (default) no jamming is enabled.
>> 
>> Hello Laurence,
>> 
>> Nic Bellinger is the maintainer of LIO so my recommendation is to ask 
>> Nic first about his opinion (I have CC'd Nic). I'm not sure what Nic 
>> thinks about this but in my opinion such functionality belongs in the 
>> target core instead of in a target driver. But please wait until Nic has 
>> provided his opinion before spending more time on this. The mailing list 
>> for SCSI target patches is target-devel@vger.kernel.org.
>> 
>
>So really it's Himanshu's + Quinn's call if they would like to include
>something like this in mainline.
>
>If so, then I'd prefer to do it with a per tcm_qla2xxx_tpg endpoint
>attribute instead a new module parameter, and add a new kernel config
>option (CONFIG_TCM_QLA2XXX_DEBUG) to disable (by default) so end users
>don't inadvertently play with it via targetcli + friends.
>

I agree here with Nic. The patch does provides benefit and is good addition,
but we don’t want to enable it by default.

Laurence, 

Would you be kind to rework patch with suggested changes from Nic and post it. 

Thanks, 
Himanshu
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision3
  2016-04-01  0:20       ` Himanshu Madhani
  2016-04-01  0:55         ` Laurence Oberman
@ 2016-04-01 18:15         ` Laurence Oberman
  2016-04-02 16:04           ` tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision4 Laurence Oberman
  1 sibling, 1 reply; 16+ messages in thread
From: Laurence Oberman @ 2016-04-01 18:15 UTC (permalink / raw)
  To: Himanshu Madhani
  Cc: Nicholas A. Bellinger, Bart Van Assche, linux-scsi, target-devel,
	Quinn Tran

Himanshu

I looked at using the attribute for this but because of where I have to discard the command I dont want to have to go fetch the attribute each time in the same code path.
Its significant overhead to have to go fetch the attribute value each time as I allow for a dynamic on off via the module parameter so I have to check it each command.
With the module parameter its a simple compare and by having this as a module parameter its globally accessible and imposes virtually no overhead.

Are you OK with me using #ifdef on the CONFIG_TCM_QLA2XXX_DEBUG .config parameter I will add here to include the module parameter and code only if set to "yes"
The default unless expicitly set will be no change.

Thanks

Laurence Oberman
Principal Software Maintenance Engineer
Red Hat Global Support Services

----- Original Message -----
From: "Himanshu Madhani" <himanshu.madhani@qlogic.com>
To: "Nicholas A. Bellinger" <nab@linux-iscsi.org>, "Bart Van Assche" <bart.vanassche@sandisk.com>
Cc: "Laurence Oberman" <loberman@redhat.com>, "linux-scsi" <linux-scsi@vger.kernel.org>, "target-devel" <target-devel@vger.kernel.org>, "Quinn Tran" <quinn.tran@qlogic.com>
Sent: Thursday, March 31, 2016 8:20:56 PM
Subject: Re: tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision3

Hi Nic, Laurence, 



On 3/30/16, 10:34 PM, "Nicholas A. Bellinger" <nab@linux-iscsi.org> wrote:

>(Adding target-devel + Qlogic target folks)
>
>On Tue, 2016-03-29 at 22:05 -0700, Bart Van Assche wrote:
>> On 03/29/16 07:42, Laurence Oberman wrote:
>> > I have been using this jammer functionality to continue testing the SCSI F/C drivers and recovery for over a year now.
>> > Any chance you would agree to ack this so I can get it in now.
>> > I last posted to the list last March and it was not picked up.
>> >
>> > I did look into moving this to upper layers but I find I use it primarily for fiber channel target testing.
>> > Attempting to add this functionality to upper layers led to complexities and this is very solid.
>> >
>> > This Patch diff against 4.5
>> >
>> > I use target LIO for all my storage array test targets and customer problem resolution here at Red Hat.
>> > This patch resulted from a requirement to mimic behavior of an expensive hardware jammer for a customer.
>> > I have used this for some time with good success to simulate and reproduce latency and slow drain fabric issues and
>> > for testing and validating error handling behavior
>> >   in the Emulex, Qlogic and other F/C drivers.
>> >
>> > Works by checking new parameter jam_host if its >= 0 and matches vha->host_no , jamming is enabled when jam_host >=0
>> > If parameter set to -1 (default) no jamming is enabled.
>> 
>> Hello Laurence,
>> 
>> Nic Bellinger is the maintainer of LIO so my recommendation is to ask 
>> Nic first about his opinion (I have CC'd Nic). I'm not sure what Nic 
>> thinks about this but in my opinion such functionality belongs in the 
>> target core instead of in a target driver. But please wait until Nic has 
>> provided his opinion before spending more time on this. The mailing list 
>> for SCSI target patches is target-devel@vger.kernel.org.
>> 
>
>So really it's Himanshu's + Quinn's call if they would like to include
>something like this in mainline.
>
>If so, then I'd prefer to do it with a per tcm_qla2xxx_tpg endpoint
>attribute instead a new module parameter, and add a new kernel config
>option (CONFIG_TCM_QLA2XXX_DEBUG) to disable (by default) so end users
>don't inadvertently play with it via targetcli + friends.
>

I agree here with Nic. The patch does provides benefit and is good addition,
but we don’t want to enable it by default.

Laurence, 

Would you be kind to rework patch with suggested changes from Nic and post it. 

Thanks, 
Himanshu
N�����r��y���b�X��ǧv�^�)޺{.n�+����{���"�{ay�ʇڙ�,j��f���h���z��w������j:+v���w�j�m��������zZ+��ݢj"��

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

* Re: tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision4
  2016-04-01 18:15         ` Laurence Oberman
@ 2016-04-02 16:04           ` Laurence Oberman
  2016-04-02 17:10             ` Laurence Oberman
  0 siblings, 1 reply; 16+ messages in thread
From: Laurence Oberman @ 2016-04-02 16:04 UTC (permalink / raw)
  To: Himanshu Madhani
  Cc: Nicholas A. Bellinger, Bart Van Assche, linux-scsi, target-devel,
	Quinn Tran

Hello Himanshu

This patch was reworked to only include the jammer code if the parameter TCM_QLA2XXX_DEBUG=Y is set.
The default is to not provide this functionality at all.
I looked at using attributes but this code is in the fastpath and the overhead or fetching the attribute
each time is not a good idea. 
Control of this needs to be dynamic and the module parameter allows a simple compare in the fastpath.

Patch notes
------------
I use target LIO for all my storage array test targets and customer problem resolution here at Red Hat.
This patch resulted from a requirement to mimic behavior of an expensive hardware jammer for a customer.
I have used this for some time with good success to simulate and reproduce latency and slow drain fabric issues and
for testing and validating error handling behavior  in the Emulex, Qlogic and other F/C drivers.

Works by checking new parameter jam_host if its >= 0 and matches vha->host_no , jamming is enabled when jam_host >=0
If parameter set to -1 (default) no jamming is enabled. 

Tested by: Laurence Oberman <loberman@redhat.com>
Signed-off-by: Laurence Oberman <loberman@redhat.com>

diff -Nurp linux-4.5/Documentation/scsi/tcm_qla2xxx.txt linux-4.5.new/Documentation/scsi/tcm_qla2xxx.txt
--- linux-4.5/Documentation/scsi/tcm_qla2xxx.txt	1969-12-31 19:00:00.000000000 -0500
+++ linux-4.5.new/Documentation/scsi/tcm_qla2xxx.txt	2016-04-02 11:36:42.693081232 -0400
@@ -0,0 +1,34 @@
+tcm_qla2xxx jammer parameter usage
+----------------------------------
+There is now a new module parameter added to the tcm_qla2xx module
+parm:           jam_host:Host to jam >=0 Enable jammer (int)
+This parameter and accompanying code is only included if the 
+Kconfig parameter TCM_QLA2XXX_DEBUG is set to Y
+By default this jammer code and functionality is disabled
+
+Use this parameter to control the discarding of SCSI commands to a selected
+host.
+This may be useful for testing error handling and simulating slow drain
+and other fabric issues.
+
+Any value >=0 that matches a fc_host # will discard the commands for that host.
+Reset back to -1 to stop the jamming.
+
+Enable host 6 to be jammed
+echo 6 > /sys/module/tcm_qla2xxx/parameters/jam_host
+
+Disable jamming on host 6
+echo -1 > /sys/module/tcm_qla2xxx/parameters/jam_host
+
+Usage example script:
+
+#!/bin/bash
+sleep_time=120  ### Time to jam for
+echo 6 >  /sys/module/tcm_qla2xxx/parameters/jam_host
+host=`cat /sys/module/tcm_qla2xxx/parameters/jam_host`
+echo "We start to discard commands on SCSI host $host"
+logger "Jammer started"
+sleep $sleep_time
+echo -1 >  /sys/module/tcm_qla2xxx/parameters/jam_host
+echo "We stopped the jammer"
+logger "Jammer stopped"
diff -Nurp linux-4.5/drivers/scsi/qla2xxx/Kconfig linux-4.5.new/drivers/scsi/qla2xxx/Kconfig
--- linux-4.5/drivers/scsi/qla2xxx/Kconfig	2016-03-14 00:28:54.000000000 -0400
+++ linux-4.5.new/drivers/scsi/qla2xxx/Kconfig	2016-04-02 11:31:15.302516676 -0400
@@ -36,3 +36,13 @@ config TCM_QLA2XXX
 	default n
 	---help---
 	Say Y here to enable the TCM_QLA2XXX fabric module for QLogic 24xx+ series target mode HBAs
+
+config TCM_QLA2XXX_DEBUG
+	bool "TCM_QLA2XXX fabric module DEBUG mode for QLogic 24xx+ series target mode HBAs"
+	depends on SCSI_QLA_FC && TARGET_CORE
+	depends on LIBFC
+	select BTREE
+	default n
+	---help---
+	Say Y here to enable the TCM_QLA2XXX fabric module DEBUG for QLogic 24xx+ series target mode HBAs
+	This will include code to enable the SCSI command jammer
diff -Nurp linux-4.5/drivers/scsi/qla2xxx/tcm_qla2xxx.c linux-4.5.new/drivers/scsi/qla2xxx/tcm_qla2xxx.c
--- linux-4.5/drivers/scsi/qla2xxx/tcm_qla2xxx.c	2016-03-14 00:28:54.000000000 -0400
+++ linux-4.5.new/drivers/scsi/qla2xxx/tcm_qla2xxx.c	2016-04-02 11:32:35.317410249 -0400
@@ -48,6 +48,12 @@
 #include "qla_target.h"
 #include "tcm_qla2xxx.h"
 
+#ifdef TCM_QLA2XXX_DEBUG
+int jam_host = -1;
+module_param(jam_host, int, 0644);
+MODULE_PARM_DESC(jam_host, "Host to jam >=0 Enable jammer");
+#endif
+
 static struct workqueue_struct *tcm_qla2xxx_free_wq;
 static struct workqueue_struct *tcm_qla2xxx_cmd_wq;
 
@@ -477,6 +483,13 @@ static int tcm_qla2xxx_handle_cmd(scsi_q
 		return -EINVAL;
 	}
 
+#ifdef TCM_QLA2XXX_DEBUG
+	if (unlikely(vha->host_no == jam_host)) {
+		/* return, and dont run target_submit_cmd,discarding command */
+		return 0;
+	}
+#endif
+
 	cmd->vha->tgt_counters.qla_core_sbt_cmd++;
 	return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
 				cmd->unpacked_lun, data_length, fcp_task_attr,
@@ -1967,6 +1980,9 @@ static void tcm_qla2xxx_deregister_confi
 static int __init tcm_qla2xxx_init(void)
 {
 	int ret;
+#ifdef TCM_QLA2XXX_DEBUG
+	jam_host = -1;
+#endif
 
 	ret = tcm_qla2xxx_register_configfs();
 	if (ret < 0)


Laurence Oberman
Principal Software Maintenance Engineer
Red Hat Global Support Services

----- Original Message -----
From: "Laurence Oberman" <loberman@redhat.com>
To: "Himanshu Madhani" <himanshu.madhani@qlogic.com>
Cc: "Nicholas A. Bellinger" <nab@linux-iscsi.org>, "Bart Van Assche" <bart.vanassche@sandisk.com>, "linux-scsi" <linux-scsi@vger.kernel.org>, "target-devel" <target-devel@vger.kernel.org>, "Quinn Tran" <quinn.tran@qlogic.com>
Sent: Friday, April 1, 2016 2:15:25 PM
Subject: Re: tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision3

Himanshu

I looked at using the attribute for this but because of where I have to discard the command I dont want to have to go fetch the attribute each time in the same code path.
Its significant overhead to have to go fetch the attribute value each time as I allow for a dynamic on off via the module parameter so I have to check it each command.
With the module parameter its a simple compare and by having this as a module parameter its globally accessible and imposes virtually no overhead.

Are you OK with me using #ifdef on the CONFIG_TCM_QLA2XXX_DEBUG .config parameter I will add here to include the module parameter and code only if set to "yes"
The default unless expicitly set will be no change.

Thanks

Laurence Oberman
Principal Software Maintenance Engineer
Red Hat Global Support Services

----- Original Message -----
From: "Himanshu Madhani" <himanshu.madhani@qlogic.com>
To: "Nicholas A. Bellinger" <nab@linux-iscsi.org>, "Bart Van Assche" <bart.vanassche@sandisk.com>
Cc: "Laurence Oberman" <loberman@redhat.com>, "linux-scsi" <linux-scsi@vger.kernel.org>, "target-devel" <target-devel@vger.kernel.org>, "Quinn Tran" <quinn.tran@qlogic.com>
Sent: Thursday, March 31, 2016 8:20:56 PM
Subject: Re: tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision3

Hi Nic, Laurence, 



On 3/30/16, 10:34 PM, "Nicholas A. Bellinger" <nab@linux-iscsi.org> wrote:

>(Adding target-devel + Qlogic target folks)
>
>On Tue, 2016-03-29 at 22:05 -0700, Bart Van Assche wrote:
>> On 03/29/16 07:42, Laurence Oberman wrote:
>> > I have been using this jammer functionality to continue testing the SCSI F/C drivers and recovery for over a year now.
>> > Any chance you would agree to ack this so I can get it in now.
>> > I last posted to the list last March and it was not picked up.
>> >
>> > I did look into moving this to upper layers but I find I use it primarily for fiber channel target testing.
>> > Attempting to add this functionality to upper layers led to complexities and this is very solid.
>> >
>> > This Patch diff against 4.5
>> >
>> > I use target LIO for all my storage array test targets and customer problem resolution here at Red Hat.
>> > This patch resulted from a requirement to mimic behavior of an expensive hardware jammer for a customer.
>> > I have used this for some time with good success to simulate and reproduce latency and slow drain fabric issues and
>> > for testing and validating error handling behavior
>> >   in the Emulex, Qlogic and other F/C drivers.
>> >
>> > Works by checking new parameter jam_host if its >= 0 and matches vha->host_no , jamming is enabled when jam_host >=0
>> > If parameter set to -1 (default) no jamming is enabled.
>> 
>> Hello Laurence,
>> 
>> Nic Bellinger is the maintainer of LIO so my recommendation is to ask 
>> Nic first about his opinion (I have CC'd Nic). I'm not sure what Nic 
>> thinks about this but in my opinion such functionality belongs in the 
>> target core instead of in a target driver. But please wait until Nic has 
>> provided his opinion before spending more time on this. The mailing list 
>> for SCSI target patches is target-devel@vger.kernel.org.
>> 
>
>So really it's Himanshu's + Quinn's call if they would like to include
>something like this in mainline.
>
>If so, then I'd prefer to do it with a per tcm_qla2xxx_tpg endpoint
>attribute instead a new module parameter, and add a new kernel config
>option (CONFIG_TCM_QLA2XXX_DEBUG) to disable (by default) so end users
>don't inadvertently play with it via targetcli + friends.
>

I agree here with Nic. The patch does provides benefit and is good addition,
but we don’t want to enable it by default.

Laurence, 

Would you be kind to rework patch with suggested changes from Nic and post it. 

Thanks, 
Himanshu
N�����r��y���b�X��ǧv�^�)޺{.n�+����{���"�{ay�ʇڙ�,j��f���h���z��w������j:+v���w�j�m��������zZ+��ݢj"��
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision4
  2016-04-02 16:04           ` tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision4 Laurence Oberman
@ 2016-04-02 17:10             ` Laurence Oberman
  2016-04-02 23:39               ` Nicholas A. Bellinger
  0 siblings, 1 reply; 16+ messages in thread
From: Laurence Oberman @ 2016-04-02 17:10 UTC (permalink / raw)
  To: Himanshu Madhani
  Cc: Nicholas A. Bellinger, Bart Van Assche, linux-scsi, target-devel,
	Quinn Tran

Hello Himanshu

I noticed a typo in the patch I submitted here is the corrected patch.
Please ignore the prior patch

I was missing the full CONFIG name in the #ifdef check 

Corrected Patch

[root@localhost home]# linux-4.5/scripts/checkpatch.pl jammer_patch.v4
total: 0 errors, 0 warnings, 81 lines checked

jammer_patch.v4 has no obvious style problems and is ready for submission.


This patch was reworked to only include the jammer code if the parameter TCM_QLA2XXX_DEBUG=Y is set.
The default is to not provide this functionality at all.
I looked at using attributes but this code is in the fastpath and the overhead or fetching the attribute
each time is not a good idea.
Control of this needs to be dynamic and the module parameter allows a simple compare in the fastpath.

Patch notes
------------
I use target LIO for all my storage array test targets and customer problem resolution here at Red Hat.
This patch resulted from a requirement to mimic behavior of an expensive hardware jammer for a customer.
I have used this for some time with good success to simulate and reproduce latency and slow drain fabric issues and
for testing and validating error handling behavior  in the Emulex, Qlogic and other F/C drivers.

Works by checking new parameter jam_host if its >= 0 and matches vha->host_no , jamming is enabled when jam_host >=0
If parameter set to -1 (default) no jamming is enabled.

Tested by: Laurence Oberman <loberman@redhat.com>
Signed-off-by: Laurence Oberman <loberman@redhat.com>

diff -Nurp linux-4.5/Documentation/scsi/tcm_qla2xxx.txt linux-4.5.new/Documentation/scsi/tcm_qla2xxx.txt
--- linux-4.5/Documentation/scsi/tcm_qla2xxx.txt	1969-12-31 19:00:00.000000000 -0500
+++ linux-4.5.new/Documentation/scsi/tcm_qla2xxx.txt	2016-04-02 11:36:42.693081232 -0400
@@ -0,0 +1,34 @@
+tcm_qla2xxx jammer parameter usage
+----------------------------------
+There is now a new module parameter added to the tcm_qla2xx module
+parm:           jam_host:Host to jam >=0 Enable jammer (int)
+This parameter and accompanying code is only included if the
+Kconfig parameter TCM_QLA2XXX_DEBUG is set to Y
+By default this jammer code and functionality is disabled
+
+Use this parameter to control the discarding of SCSI commands to a selected
+host.
+This may be useful for testing error handling and simulating slow drain
+and other fabric issues.
+
+Any value >=0 that matches a fc_host # will discard the commands for that host.
+Reset back to -1 to stop the jamming.
+
+Enable host 6 to be jammed
+echo 6 > /sys/module/tcm_qla2xxx/parameters/jam_host
+
+Disable jamming on host 6
+echo -1 > /sys/module/tcm_qla2xxx/parameters/jam_host
+
+Usage example script:
+
+#!/bin/bash
+sleep_time=120  ### Time to jam for
+echo 6 >  /sys/module/tcm_qla2xxx/parameters/jam_host
+host=`cat /sys/module/tcm_qla2xxx/parameters/jam_host`
+echo "We start to discard commands on SCSI host $host"
+logger "Jammer started"
+sleep $sleep_time
+echo -1 >  /sys/module/tcm_qla2xxx/parameters/jam_host
+echo "We stopped the jammer"
+logger "Jammer stopped"
diff -Nurp linux-4.5/drivers/scsi/qla2xxx/Kconfig linux-4.5.new/drivers/scsi/qla2xxx/Kconfig
--- linux-4.5/drivers/scsi/qla2xxx/Kconfig	2016-03-14 00:28:54.000000000 -0400
+++ linux-4.5.new/drivers/scsi/qla2xxx/Kconfig	2016-04-02 11:31:15.302516676 -0400
@@ -36,3 +36,13 @@ config TCM_QLA2XXX
 	default n
 	---help---
 	Say Y here to enable the TCM_QLA2XXX fabric module for QLogic 24xx+ series target mode HBAs
+
+config TCM_QLA2XXX_DEBUG
+	bool "TCM_QLA2XXX fabric module DEBUG mode for QLogic 24xx+ series target mode HBAs"
+	depends on SCSI_QLA_FC && TARGET_CORE
+	depends on LIBFC
+	select BTREE
+	default n
+	---help---
+	Say Y here to enable the TCM_QLA2XXX fabric module DEBUG for QLogic 24xx+ series target mode HBAs
+	This will include code to enable the SCSI command jammer
diff -Nurp linux-4.5/drivers/scsi/qla2xxx/tcm_qla2xxx.c linux-4.5.new/drivers/scsi/qla2xxx/tcm_qla2xxx.c
--- linux-4.5/drivers/scsi/qla2xxx/tcm_qla2xxx.c	2016-03-14 00:28:54.000000000 -0400
+++ linux-4.5.new/drivers/scsi/qla2xxx/tcm_qla2xxx.c	2016-04-02 11:32:35.317410249 -0400
@@ -48,6 +48,12 @@
 #include "qla_target.h"
 #include "tcm_qla2xxx.h"
 
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+int jam_host = -1;
+module_param(jam_host, int, 0644);
+MODULE_PARM_DESC(jam_host, "Host to jam >=0 Enable jammer");
+#endif
+
 static struct workqueue_struct *tcm_qla2xxx_free_wq;
 static struct workqueue_struct *tcm_qla2xxx_cmd_wq;
 
@@ -477,6 +483,13 @@ static int tcm_qla2xxx_handle_cmd(scsi_q
 		return -EINVAL;
 	}
 
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+	if (unlikely(vha->host_no == jam_host)) {
+		/* return, and dont run target_submit_cmd,discarding command */
+		return 0;
+	}
+#endif
+
 	cmd->vha->tgt_counters.qla_core_sbt_cmd++;
 	return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
 				cmd->unpacked_lun, data_length, fcp_task_attr,
@@ -1967,6 +1980,9 @@ static void tcm_qla2xxx_deregister_confi
 static int __init tcm_qla2xxx_init(void)
 {
 	int ret;
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+	jam_host = -1;
+#endif
 
 	ret = tcm_qla2xxx_register_configfs();
 	if (ret < 0)



----- Original Message -----
From: "Laurence Oberman" <loberman@redhat.com>
To: "Himanshu Madhani" <himanshu.madhani@qlogic.com>
Cc: "Nicholas A. Bellinger" <nab@linux-iscsi.org>, "Bart Van Assche" <bart.vanassche@sandisk.com>, "linux-scsi" <linux-scsi@vger.kernel.org>, "target-devel" <target-devel@vger.kernel.org>, "Quinn Tran" <quinn.tran@qlogic.com>
Sent: Saturday, April 2, 2016 12:04:54 PM
Subject: Re: tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision4

Hello Himanshu

This patch was reworked to only include the jammer code if the parameter TCM_QLA2XXX_DEBUG=Y is set.
The default is to not provide this functionality at all.
I looked at using attributes but this code is in the fastpath and the overhead or fetching the attribute
each time is not a good idea. 
Control of this needs to be dynamic and the module parameter allows a simple compare in the fastpath.

Patch notes
------------
I use target LIO for all my storage array test targets and customer problem resolution here at Red Hat.
This patch resulted from a requirement to mimic behavior of an expensive hardware jammer for a customer.
I have used this for some time with good success to simulate and reproduce latency and slow drain fabric issues and
for testing and validating error handling behavior  in the Emulex, Qlogic and other F/C drivers.

Works by checking new parameter jam_host if its >= 0 and matches vha->host_no , jamming is enabled when jam_host >=0
If parameter set to -1 (default) no jamming is enabled. 

Tested by: Laurence Oberman <loberman@redhat.com>
Signed-off-by: Laurence Oberman <loberman@redhat.com>

diff -Nurp linux-4.5/Documentation/scsi/tcm_qla2xxx.txt linux-4.5.new/Documentation/scsi/tcm_qla2xxx.txt
--- linux-4.5/Documentation/scsi/tcm_qla2xxx.txt	1969-12-31 19:00:00.000000000 -0500
+++ linux-4.5.new/Documentation/scsi/tcm_qla2xxx.txt	2016-04-02 11:36:42.693081232 -0400
@@ -0,0 +1,34 @@
+tcm_qla2xxx jammer parameter usage
+----------------------------------
+There is now a new module parameter added to the tcm_qla2xx module
+parm:           jam_host:Host to jam >=0 Enable jammer (int)
+This parameter and accompanying code is only included if the 
+Kconfig parameter TCM_QLA2XXX_DEBUG is set to Y
+By default this jammer code and functionality is disabled
+
+Use this parameter to control the discarding of SCSI commands to a selected
+host.
+This may be useful for testing error handling and simulating slow drain
+and other fabric issues.
+
+Any value >=0 that matches a fc_host # will discard the commands for that host.
+Reset back to -1 to stop the jamming.
+
+Enable host 6 to be jammed
+echo 6 > /sys/module/tcm_qla2xxx/parameters/jam_host
+
+Disable jamming on host 6
+echo -1 > /sys/module/tcm_qla2xxx/parameters/jam_host
+
+Usage example script:
+
+#!/bin/bash
+sleep_time=120  ### Time to jam for
+echo 6 >  /sys/module/tcm_qla2xxx/parameters/jam_host
+host=`cat /sys/module/tcm_qla2xxx/parameters/jam_host`
+echo "We start to discard commands on SCSI host $host"
+logger "Jammer started"
+sleep $sleep_time
+echo -1 >  /sys/module/tcm_qla2xxx/parameters/jam_host
+echo "We stopped the jammer"
+logger "Jammer stopped"
diff -Nurp linux-4.5/drivers/scsi/qla2xxx/Kconfig linux-4.5.new/drivers/scsi/qla2xxx/Kconfig
--- linux-4.5/drivers/scsi/qla2xxx/Kconfig	2016-03-14 00:28:54.000000000 -0400
+++ linux-4.5.new/drivers/scsi/qla2xxx/Kconfig	2016-04-02 11:31:15.302516676 -0400
@@ -36,3 +36,13 @@ config TCM_QLA2XXX
 	default n
 	---help---
 	Say Y here to enable the TCM_QLA2XXX fabric module for QLogic 24xx+ series target mode HBAs
+
+config TCM_QLA2XXX_DEBUG
+	bool "TCM_QLA2XXX fabric module DEBUG mode for QLogic 24xx+ series target mode HBAs"
+	depends on SCSI_QLA_FC && TARGET_CORE
+	depends on LIBFC
+	select BTREE
+	default n
+	---help---
+	Say Y here to enable the TCM_QLA2XXX fabric module DEBUG for QLogic 24xx+ series target mode HBAs
+	This will include code to enable the SCSI command jammer
diff -Nurp linux-4.5/drivers/scsi/qla2xxx/tcm_qla2xxx.c linux-4.5.new/drivers/scsi/qla2xxx/tcm_qla2xxx.c
--- linux-4.5/drivers/scsi/qla2xxx/tcm_qla2xxx.c	2016-03-14 00:28:54.000000000 -0400
+++ linux-4.5.new/drivers/scsi/qla2xxx/tcm_qla2xxx.c	2016-04-02 11:32:35.317410249 -0400
@@ -48,6 +48,12 @@
 #include "qla_target.h"
 #include "tcm_qla2xxx.h"
 
+#ifdef TCM_QLA2XXX_DEBUG
+int jam_host = -1;
+module_param(jam_host, int, 0644);
+MODULE_PARM_DESC(jam_host, "Host to jam >=0 Enable jammer");
+#endif
+
 static struct workqueue_struct *tcm_qla2xxx_free_wq;
 static struct workqueue_struct *tcm_qla2xxx_cmd_wq;
 
@@ -477,6 +483,13 @@ static int tcm_qla2xxx_handle_cmd(scsi_q
 		return -EINVAL;
 	}
 
+#ifdef TCM_QLA2XXX_DEBUG
+	if (unlikely(vha->host_no == jam_host)) {
+		/* return, and dont run target_submit_cmd,discarding command */
+		return 0;
+	}
+#endif
+
 	cmd->vha->tgt_counters.qla_core_sbt_cmd++;
 	return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
 				cmd->unpacked_lun, data_length, fcp_task_attr,
@@ -1967,6 +1980,9 @@ static void tcm_qla2xxx_deregister_confi
 static int __init tcm_qla2xxx_init(void)
 {
 	int ret;
+#ifdef TCM_QLA2XXX_DEBUG
+	jam_host = -1;
+#endif
 
 	ret = tcm_qla2xxx_register_configfs();
 	if (ret < 0)


Laurence Oberman
Principal Software Maintenance Engineer
Red Hat Global Support Services

----- Original Message -----
From: "Laurence Oberman" <loberman@redhat.com>
To: "Himanshu Madhani" <himanshu.madhani@qlogic.com>
Cc: "Nicholas A. Bellinger" <nab@linux-iscsi.org>, "Bart Van Assche" <bart.vanassche@sandisk.com>, "linux-scsi" <linux-scsi@vger.kernel.org>, "target-devel" <target-devel@vger.kernel.org>, "Quinn Tran" <quinn.tran@qlogic.com>
Sent: Friday, April 1, 2016 2:15:25 PM
Subject: Re: tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision3

Himanshu

I looked at using the attribute for this but because of where I have to discard the command I dont want to have to go fetch the attribute each time in the same code path.
Its significant overhead to have to go fetch the attribute value each time as I allow for a dynamic on off via the module parameter so I have to check it each command.
With the module parameter its a simple compare and by having this as a module parameter its globally accessible and imposes virtually no overhead.

Are you OK with me using #ifdef on the CONFIG_TCM_QLA2XXX_DEBUG .config parameter I will add here to include the module parameter and code only if set to "yes"
The default unless expicitly set will be no change.

Thanks

Laurence Oberman
Principal Software Maintenance Engineer
Red Hat Global Support Services

----- Original Message -----
From: "Himanshu Madhani" <himanshu.madhani@qlogic.com>
To: "Nicholas A. Bellinger" <nab@linux-iscsi.org>, "Bart Van Assche" <bart.vanassche@sandisk.com>
Cc: "Laurence Oberman" <loberman@redhat.com>, "linux-scsi" <linux-scsi@vger.kernel.org>, "target-devel" <target-devel@vger.kernel.org>, "Quinn Tran" <quinn.tran@qlogic.com>
Sent: Thursday, March 31, 2016 8:20:56 PM
Subject: Re: tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision3

Hi Nic, Laurence, 



On 3/30/16, 10:34 PM, "Nicholas A. Bellinger" <nab@linux-iscsi.org> wrote:

>(Adding target-devel + Qlogic target folks)
>
>On Tue, 2016-03-29 at 22:05 -0700, Bart Van Assche wrote:
>> On 03/29/16 07:42, Laurence Oberman wrote:
>> > I have been using this jammer functionality to continue testing the SCSI F/C drivers and recovery for over a year now.
>> > Any chance you would agree to ack this so I can get it in now.
>> > I last posted to the list last March and it was not picked up.
>> >
>> > I did look into moving this to upper layers but I find I use it primarily for fiber channel target testing.
>> > Attempting to add this functionality to upper layers led to complexities and this is very solid.
>> >
>> > This Patch diff against 4.5
>> >
>> > I use target LIO for all my storage array test targets and customer problem resolution here at Red Hat.
>> > This patch resulted from a requirement to mimic behavior of an expensive hardware jammer for a customer.
>> > I have used this for some time with good success to simulate and reproduce latency and slow drain fabric issues and
>> > for testing and validating error handling behavior
>> >   in the Emulex, Qlogic and other F/C drivers.
>> >
>> > Works by checking new parameter jam_host if its >= 0 and matches vha->host_no , jamming is enabled when jam_host >=0
>> > If parameter set to -1 (default) no jamming is enabled.
>> 
>> Hello Laurence,
>> 
>> Nic Bellinger is the maintainer of LIO so my recommendation is to ask 
>> Nic first about his opinion (I have CC'd Nic). I'm not sure what Nic 
>> thinks about this but in my opinion such functionality belongs in the 
>> target core instead of in a target driver. But please wait until Nic has 
>> provided his opinion before spending more time on this. The mailing list 
>> for SCSI target patches is target-devel@vger.kernel.org.
>> 
>
>So really it's Himanshu's + Quinn's call if they would like to include
>something like this in mainline.
>
>If so, then I'd prefer to do it with a per tcm_qla2xxx_tpg endpoint
>attribute instead a new module parameter, and add a new kernel config
>option (CONFIG_TCM_QLA2XXX_DEBUG) to disable (by default) so end users
>don't inadvertently play with it via targetcli + friends.
>

I agree here with Nic. The patch does provides benefit and is good addition,
but we don’t want to enable it by default.

Laurence, 

Would you be kind to rework patch with suggested changes from Nic and post it. 

Thanks, 
Himanshu
N�����r��y���b�X��ǧv�^�)޺{.n�+����{���"�{ay�ʇڙ�,j��f���h���z��w������j:+v���w�j�m��������zZ+��ݢj"��
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision4
  2016-04-02 17:10             ` Laurence Oberman
@ 2016-04-02 23:39               ` Nicholas A. Bellinger
  2016-04-03 13:57                 ` [PATCH] tcm_qla2xxx Add SCSI command jammer/discard capability to the tcm_qla2xxx module Laurence Oberman
  0 siblings, 1 reply; 16+ messages in thread
From: Nicholas A. Bellinger @ 2016-04-02 23:39 UTC (permalink / raw)
  To: Laurence Oberman
  Cc: Himanshu Madhani, Bart Van Assche, linux-scsi, target-devel, Quinn Tran

Hi Laurence,

On Sat, 2016-04-02 at 13:10 -0400, Laurence Oberman wrote:
> Hello Himanshu
> 
> I noticed a typo in the patch I submitted here is the corrected patch.
> Please ignore the prior patch
> 
> I was missing the full CONFIG name in the #ifdef check 
> 
> Corrected Patch

Two quick process related comments:

Please avoid top-posting responses, as it makes the thread more
difficult for others to follow.

Also, please send out kernel patches for list review using
git-format-patch + git-send-email tools, instead of responding with new
versions in the original email thread.

> 
> [root@localhost home]# linux-4.5/scripts/checkpatch.pl jammer_patch.v4
> total: 0 errors, 0 warnings, 81 lines checked
> 
> jammer_patch.v4 has no obvious style problems and is ready for submission.
> 
> 
> This patch was reworked to only include the jammer code if the parameter TCM_QLA2XXX_DEBUG=Y is set.
> The default is to not provide this functionality at all.
> I looked at using attributes but this code is in the fastpath and the overhead or fetching the attribute
> each time is not a good idea.
> Control of this needs to be dynamic and the module parameter allows a simple compare in the fastpath.
> 

I don't see how a per tcm_qla2xxx (scsi_qla_host) TPG endpoint attribute
has any noticeable performance impact with TCM_QLA2XXX_DEBUG=y vs. a
global module parameter doing scsi_qla_host->host_no comparison.

Eg, have you tried something like the following..?

diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
index c1461d2..3b13a89a 100644
--- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
+++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
@@ -477,6 +477,17 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha, struct qla_tgt_c
                return -EINVAL;
        }
 
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+       {
+       struct se_portal_group *se_tpg = se_sess->se_tpg;
+       struct tcm_qla2xxx_tpg *tpg = container_of(se_tpg,
+                               struct tcm_qla2xxx_tpg, se_tpg);
+
+       if (tpg->tpg_attrib.jam_host)
+               return 0;
+
+       }
+#endif
        cmd->vha->tgt_counters.qla_core_sbt_cmd++;
        return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
                                cmd->unpacked_lun, data_length, fcp_task_attr,
@@ -845,12 +856,19 @@ DEF_QLA_TPG_ATTRIB(demo_mode_write_protect);
 DEF_QLA_TPG_ATTRIB(prod_mode_write_protect);
 DEF_QLA_TPG_ATTRIB(demo_mode_login_only);
 
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+DEF_QLA_TPG_ATTRIB(jam_host);
+#endif
+
 static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
        &tcm_qla2xxx_tpg_attrib_attr_generate_node_acls,
        &tcm_qla2xxx_tpg_attrib_attr_cache_dynamic_acls,
        &tcm_qla2xxx_tpg_attrib_attr_demo_mode_write_protect,
        &tcm_qla2xxx_tpg_attrib_attr_prod_mode_write_protect,
        &tcm_qla2xxx_tpg_attrib_attr_demo_mode_login_only,
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+       &tcm_qla2xxx_tpg_attrib_attr_jam_host,
+#endif
        NULL,
 };
 
diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.h b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
index 3bbf4cb..37e026a 100644
--- a/drivers/scsi/qla2xxx/tcm_qla2xxx.h
+++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
@@ -34,6 +34,7 @@ struct tcm_qla2xxx_tpg_attrib {
        int prod_mode_write_protect;
        int demo_mode_login_only;
        int fabric_prot_type;
+       int jam_host;
 };
 
 struct tcm_qla2xxx_tpg {

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

* [PATCH]  tcm_qla2xxx Add SCSI command jammer/discard capability to the tcm_qla2xxx module
  2016-04-02 23:39               ` Nicholas A. Bellinger
@ 2016-04-03 13:57                 ` Laurence Oberman
  2016-04-04 20:54                   ` Nicholas A. Bellinger
  0 siblings, 1 reply; 16+ messages in thread
From: Laurence Oberman @ 2016-04-03 13:57 UTC (permalink / raw)
  To: Nicholas A. Bellinger
  Cc: Himanshu Madhani, Bart Van Assche, linux-scsi, target-devel, Quinn Tran

Hi Nicholas

Apologies for the top posting, that was in my haste to correct the prior patch that had the typo.
When I investigated the attributes it looked like I would have had to create a store and a check function and call the check function each time.
That was my lack of understanding of the functionality.

I also looked at your example and in my case I needed a way to set the attribute to a number matching the host#.
When I tested this I was only able to set boolean values of 1 or 0 for the attributes and the definition of
tcm_qla2xxx_tpg_attrib_##name##_store validates that only booleans of 1 or 0 are supported.

However after your email I then realized using a boolean on the endpoints below will work here.
Thank you for taking the time to show me, it was very helpful.

sys]# find . -name jam_host
./kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
./kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:af/tpgt_1/attrib/jam_host

I tested this and here are the patches in the format you require.
Hopefully this new functionality will be useful for others.
I am not set for emailing directly from git.

Tested by: Laurence Oberman <loberman@redhat.com>
Signed-off-by: Laurence Oberman <loberman@redhat.com>
---
 drivers/scsi/qla2xxx/Kconfig       |   11 +++++++++++
 drivers/scsi/qla2xxx/tcm_qla2xxx.c |   20 ++++++++++++++++++++
 drivers/scsi/qla2xxx/tcm_qla2xxx.h |    1 +
 3 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/drivers/scsi/qla2xxx/Kconfig b/drivers/scsi/qla2xxx/Kconfig
index 10aa18b..5110fab 100644
--- a/drivers/scsi/qla2xxx/Kconfig
+++ b/drivers/scsi/qla2xxx/Kconfig
@@ -36,3 +36,14 @@ config TCM_QLA2XXX
 	default n
 	---help---
 	Say Y here to enable the TCM_QLA2XXX fabric module for QLogic 24xx+ series target mode HBAs
+
+config TCM_QLA2XXX_DEBUG
+	bool "TCM_QLA2XXX fabric module DEBUG mode for QLogic 24xx+ series target mode HBAs"
+	depends on SCSI_QLA_FC && TARGET_CORE
+	depends on LIBFC
+	select BTREE
+	default n
+	---help---
+	Say Y here to enable the TCM_QLA2XXX fabric module DEBUG for QLogic 24xx+ series target mode HBAs
+	This will include code to enable the SCSI command jammer
+
diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
index 1808a01..411a450 100644
--- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
+++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
@@ -457,6 +457,10 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha, struct qla_tgt_cmd *cmd,
 	struct se_cmd *se_cmd = &cmd->se_cmd;
 	struct se_session *se_sess;
 	struct qla_tgt_sess *sess;
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+        struct se_portal_group *se_tpg;
+        struct tcm_qla2xxx_tpg *tpg;
+#endif
 	int flags = TARGET_SCF_ACK_KREF;
 
 	if (bidi)
@@ -476,6 +480,15 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha, struct qla_tgt_cmd *cmd,
 		pr_err("Unable to locate active struct se_session\n");
 		return -EINVAL;
 	}
+ 
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+	se_tpg = se_sess->se_tpg;
+	tpg = container_of(se_tpg,struct tcm_qla2xxx_tpg, se_tpg);
+ 	if (unlikely(tpg->tpg_attrib.jam_host)) {
+ 		/* return, and dont run target_submit_cmd,discarding command */
+                return 0;
+	}
+#endif
 
 	cmd->vha->tgt_counters.qla_core_sbt_cmd++;
 	return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
@@ -844,6 +857,9 @@ DEF_QLA_TPG_ATTRIB(cache_dynamic_acls);
 DEF_QLA_TPG_ATTRIB(demo_mode_write_protect);
 DEF_QLA_TPG_ATTRIB(prod_mode_write_protect);
 DEF_QLA_TPG_ATTRIB(demo_mode_login_only);
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+DEF_QLA_TPG_ATTRIB(jam_host);
+#endif
 
 static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
 	&tcm_qla2xxx_tpg_attrib_attr_generate_node_acls,
@@ -851,6 +867,9 @@ static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
 	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_write_protect,
 	&tcm_qla2xxx_tpg_attrib_attr_prod_mode_write_protect,
 	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_login_only,
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+        &tcm_qla2xxx_tpg_attrib_attr_jam_host,
+#endif
 	NULL,
 };
 
@@ -1023,6 +1042,7 @@ static struct se_portal_group *tcm_qla2xxx_make_tpg(
 	tpg->tpg_attrib.demo_mode_write_protect = 1;
 	tpg->tpg_attrib.cache_dynamic_acls = 1;
 	tpg->tpg_attrib.demo_mode_login_only = 1;
+	tpg->tpg_attrib.jam_host = 0;
 
 	ret = core_tpg_register(wwn, &tpg->se_tpg, SCSI_PROTOCOL_FCP);
 	if (ret < 0) {
diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.h b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
index 3bbf4cb..37e026a 100644
--- a/drivers/scsi/qla2xxx/tcm_qla2xxx.h
+++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
@@ -34,6 +34,7 @@ struct tcm_qla2xxx_tpg_attrib {
 	int prod_mode_write_protect;
 	int demo_mode_login_only;
 	int fabric_prot_type;
+	int jam_host;
 };
 
 struct tcm_qla2xxx_tpg {
-- 
1.7.1

Tested by: Laurence Oberman <loberman@redhat.com>
Signed-off-by: Laurence Oberman <loberman@redhat.com>
---
 Documentation/scsi/tcm_qla2xxx.txt |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)
 create mode 100644 Documentation/scsi/tcm_qla2xxx.txt

diff --git a/Documentation/scsi/tcm_qla2xxx.txt b/Documentation/scsi/tcm_qla2xxx.txt
new file mode 100644
index 0000000..364c817
--- /dev/null
+++ b/Documentation/scsi/tcm_qla2xxx.txt
@@ -0,0 +1,22 @@
+tcm_qla2xxx jam_host attribute
+------------------------------
+There is now a new module endpoint atribute called jam_host
+attribute: jam_host: boolean=0/1 
+This attribute and accompanying code is only included if the 
+Kconfig parameter TCM_QLA2XXX_DEBUG is set to Y
+By default this jammer code and functionality is disabled
+
+Use this attribute to control the discarding of SCSI commands to a 
+selected host.
+This may be useful for testing error handling and simulating slow drain
+and other fabric issues.
+
+Setting a boolean of 1 for the jam_host attribute for a particular host
+ will discard the commands for that host.
+Reset back to 0 to stop the jamming.
+
+Enable host 4 to be jammed
+echo 1 > /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
+
+Disable jamming on host 4
+echo 0 > /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
-- 
1.7.1

Laurence Oberman
Principal Software Maintenance Engineer
Red Hat Global Support Services

----- Original Message -----
From: "Nicholas A. Bellinger" <nab@linux-iscsi.org>
To: "Laurence Oberman" <loberman@redhat.com>
Cc: "Himanshu Madhani" <himanshu.madhani@qlogic.com>, "Bart Van Assche" <bart.vanassche@sandisk.com>, "linux-scsi" <linux-scsi@vger.kernel.org>, "target-devel" <target-devel@vger.kernel.org>, "Quinn Tran" <quinn.tran@qlogic.com>
Sent: Saturday, April 2, 2016 7:39:35 PM
Subject: Re: tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision4

Hi Laurence,

On Sat, 2016-04-02 at 13:10 -0400, Laurence Oberman wrote:
> Hello Himanshu
> 
> I noticed a typo in the patch I submitted here is the corrected patch.
> Please ignore the prior patch
> 
> I was missing the full CONFIG name in the #ifdef check 
> 
> Corrected Patch

Two quick process related comments:

Please avoid top-posting responses, as it makes the thread more
difficult for others to follow.

Also, please send out kernel patches for list review using
git-format-patch + git-send-email tools, instead of responding with new
versions in the original email thread.

> 
> [root@localhost home]# linux-4.5/scripts/checkpatch.pl jammer_patch.v4
> total: 0 errors, 0 warnings, 81 lines checked
> 
> jammer_patch.v4 has no obvious style problems and is ready for submission.
> 
> 
> This patch was reworked to only include the jammer code if the parameter TCM_QLA2XXX_DEBUG=Y is set.
> The default is to not provide this functionality at all.
> I looked at using attributes but this code is in the fastpath and the overhead or fetching the attribute
> each time is not a good idea.
> Control of this needs to be dynamic and the module parameter allows a simple compare in the fastpath.
> 

I don't see how a per tcm_qla2xxx (scsi_qla_host) TPG endpoint attribute
has any noticeable performance impact with TCM_QLA2XXX_DEBUG=y vs. a
global module parameter doing scsi_qla_host->host_no comparison.

Eg, have you tried something like the following..?

diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
index c1461d2..3b13a89a 100644
--- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
+++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
@@ -477,6 +477,17 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha, struct qla_tgt_c
                return -EINVAL;
        }
 
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+       {
+       struct se_portal_group *se_tpg = se_sess->se_tpg;
+       struct tcm_qla2xxx_tpg *tpg = container_of(se_tpg,
+                               struct tcm_qla2xxx_tpg, se_tpg);
+
+       if (tpg->tpg_attrib.jam_host)
+               return 0;
+
+       }
+#endif
        cmd->vha->tgt_counters.qla_core_sbt_cmd++;
        return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
                                cmd->unpacked_lun, data_length, fcp_task_attr,
@@ -845,12 +856,19 @@ DEF_QLA_TPG_ATTRIB(demo_mode_write_protect);
 DEF_QLA_TPG_ATTRIB(prod_mode_write_protect);
 DEF_QLA_TPG_ATTRIB(demo_mode_login_only);
 
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+DEF_QLA_TPG_ATTRIB(jam_host);
+#endif
+
 static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
        &tcm_qla2xxx_tpg_attrib_attr_generate_node_acls,
        &tcm_qla2xxx_tpg_attrib_attr_cache_dynamic_acls,
        &tcm_qla2xxx_tpg_attrib_attr_demo_mode_write_protect,
        &tcm_qla2xxx_tpg_attrib_attr_prod_mode_write_protect,
        &tcm_qla2xxx_tpg_attrib_attr_demo_mode_login_only,
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+       &tcm_qla2xxx_tpg_attrib_attr_jam_host,
+#endif
        NULL,
 };
 
diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.h b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
index 3bbf4cb..37e026a 100644
--- a/drivers/scsi/qla2xxx/tcm_qla2xxx.h
+++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
@@ -34,6 +34,7 @@ struct tcm_qla2xxx_tpg_attrib {
        int prod_mode_write_protect;
        int demo_mode_login_only;
        int fabric_prot_type;
+       int jam_host;
 };
 
 struct tcm_qla2xxx_tpg {


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

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

* Re: [PATCH]  tcm_qla2xxx Add SCSI command jammer/discard capability to the tcm_qla2xxx module
  2016-04-03 13:57                 ` [PATCH] tcm_qla2xxx Add SCSI command jammer/discard capability to the tcm_qla2xxx module Laurence Oberman
@ 2016-04-04 20:54                   ` Nicholas A. Bellinger
  2016-04-04 22:50                     ` Laurence Oberman
  0 siblings, 1 reply; 16+ messages in thread
From: Nicholas A. Bellinger @ 2016-04-04 20:54 UTC (permalink / raw)
  To: Laurence Oberman
  Cc: Himanshu Madhani, Bart Van Assche, linux-scsi, target-devel, Quinn Tran

On Sun, 2016-04-03 at 09:57 -0400, Laurence Oberman wrote:
> Hi Nicholas
> 
> Apologies for the top posting, that was in my haste to correct the prior patch that had the typo.
> When I investigated the attributes it looked like I would have had to create a store and a check function and call the check function each time.
> That was my lack of understanding of the functionality.
> 
> I also looked at your example and in my case I needed a way to set the attribute to a number matching the host#.
> When I tested this I was only able to set boolean values of 1 or 0 for the attributes and the definition of
> tcm_qla2xxx_tpg_attrib_##name##_store validates that only booleans of 1 or 0 are supported.
> 
> However after your email I then realized using a boolean on the endpoints below will work here.
> Thank you for taking the time to show me, it was very helpful.
> 
> sys]# find . -name jam_host
> ./kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
> ./kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:af/tpgt_1/attrib/jam_host
> 
> I tested this and here are the patches in the format you require.
> Hopefully this new functionality will be useful for others.
> I am not set for emailing directly from git.
> 
> Tested by: Laurence Oberman <loberman@redhat.com>
> Signed-off-by: Laurence Oberman <loberman@redhat.com>
> ---
>  drivers/scsi/qla2xxx/Kconfig       |   11 +++++++++++
>  drivers/scsi/qla2xxx/tcm_qla2xxx.c |   20 ++++++++++++++++++++
>  drivers/scsi/qla2xxx/tcm_qla2xxx.h |    1 +
>  3 files changed, 32 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/scsi/qla2xxx/Kconfig b/drivers/scsi/qla2xxx/Kconfig
> index 10aa18b..5110fab 100644
> --- a/drivers/scsi/qla2xxx/Kconfig
> +++ b/drivers/scsi/qla2xxx/Kconfig
> @@ -36,3 +36,14 @@ config TCM_QLA2XXX
>  	default n
>  	---help---
>  	Say Y here to enable the TCM_QLA2XXX fabric module for QLogic 24xx+ series target mode HBAs
> +
> +config TCM_QLA2XXX_DEBUG
> +	bool "TCM_QLA2XXX fabric module DEBUG mode for QLogic 24xx+ series target mode HBAs"
> +	depends on SCSI_QLA_FC && TARGET_CORE
> +	depends on LIBFC
> +	select BTREE
> +	default n
> +	---help---
> +	Say Y here to enable the TCM_QLA2XXX fabric module DEBUG for QLogic 24xx+ series target mode HBAs
> +	This will include code to enable the SCSI command jammer
> +

Instead of duplicating the 'depends' here for TCM_QLA2XXX, just do a:

if TCM_QLA2XXX

config TCM_QLA2XXX_DEBUG
...
...

endif

> diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> index 1808a01..411a450 100644
> --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> @@ -457,6 +457,10 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha, struct qla_tgt_cmd *cmd,
>  	struct se_cmd *se_cmd = &cmd->se_cmd;
>  	struct se_session *se_sess;
>  	struct qla_tgt_sess *sess;
> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> +        struct se_portal_group *se_tpg;
> +        struct tcm_qla2xxx_tpg *tpg;
> +#endif

Whitespace instead of TAB here.

>  	int flags = TARGET_SCF_ACK_KREF;
>  
>  	if (bidi)
> @@ -476,6 +480,15 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha, struct qla_tgt_cmd *cmd,
>  		pr_err("Unable to locate active struct se_session\n");
>  		return -EINVAL;
>  	}
> + 
> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> +	se_tpg = se_sess->se_tpg;
> +	tpg = container_of(se_tpg,struct tcm_qla2xxx_tpg, se_tpg);
> + 	if (unlikely(tpg->tpg_attrib.jam_host)) {
> + 		/* return, and dont run target_submit_cmd,discarding command */
> +                return 0;
> +	}
> +#endif

Whitespace instead of TABs here too.

>  
>  	cmd->vha->tgt_counters.qla_core_sbt_cmd++;
>  	return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
> @@ -844,6 +857,9 @@ DEF_QLA_TPG_ATTRIB(cache_dynamic_acls);
>  DEF_QLA_TPG_ATTRIB(demo_mode_write_protect);
>  DEF_QLA_TPG_ATTRIB(prod_mode_write_protect);
>  DEF_QLA_TPG_ATTRIB(demo_mode_login_only);
> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> +DEF_QLA_TPG_ATTRIB(jam_host);
> +#endif
>  
>  static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
>  	&tcm_qla2xxx_tpg_attrib_attr_generate_node_acls,
> @@ -851,6 +867,9 @@ static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
>  	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_write_protect,
>  	&tcm_qla2xxx_tpg_attrib_attr_prod_mode_write_protect,
>  	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_login_only,
> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> +        &tcm_qla2xxx_tpg_attrib_attr_jam_host,
> +#endif
>  	NULL,
>  };

Whitespace instead of TABs here too.



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

* Re: [PATCH]  tcm_qla2xxx Add SCSI command jammer/discard capability to the tcm_qla2xxx module
  2016-04-04 20:54                   ` Nicholas A. Bellinger
@ 2016-04-04 22:50                     ` Laurence Oberman
  2016-05-09 14:56                       ` Laurence Oberman
  0 siblings, 1 reply; 16+ messages in thread
From: Laurence Oberman @ 2016-04-04 22:50 UTC (permalink / raw)
  To: Nicholas A. Bellinger
  Cc: Himanshu Madhani, Bart Van Assche, linux-scsi, target-devel, Quinn Tran

Hello Nicholas

Its fixed now.
Many Thanks.

$ scripts/checkpatch.pl 0001-tcm_qla2xxx-Add-SCSI-command-jammer-discard-capabili.patch
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#12: 
new file mode 100644

total: 0 errors, 1 warnings, 91 lines checked

0001-tcm_qla2xxx-Add-SCSI-command-jammer-discard-capabili.patch has style problems, please review.

NOTE: If any of the errors are false positives, please report
      them to the maintainer, see CHECKPATCH in MAINTAINERS.



Tested by: Laurence Oberman <loberman@redhat.com>
Signed-off-by: Laurence Oberman <loberman@redhat.com>
---
 Documentation/scsi/tcm_qla2xxx.txt |   22 ++++++++++++++++++++++
 drivers/scsi/qla2xxx/Kconfig       |    9 +++++++++
 drivers/scsi/qla2xxx/tcm_qla2xxx.c |   20 ++++++++++++++++++++
 drivers/scsi/qla2xxx/tcm_qla2xxx.h |    1 +
 4 files changed, 52 insertions(+), 0 deletions(-)
 create mode 100644 Documentation/scsi/tcm_qla2xxx.txt

diff --git a/Documentation/scsi/tcm_qla2xxx.txt b/Documentation/scsi/tcm_qla2xxx.txt
new file mode 100644
index 0000000..c3a670a
--- /dev/null
+++ b/Documentation/scsi/tcm_qla2xxx.txt
@@ -0,0 +1,22 @@
+tcm_qla2xxx jam_host attribute
+------------------------------
+There is now a new module endpoint atribute called jam_host
+attribute: jam_host: boolean=0/1
+This attribute and accompanying code is only included if the
+Kconfig parameter TCM_QLA2XXX_DEBUG is set to Y
+By default this jammer code and functionality is disabled
+
+Use this attribute to control the discarding of SCSI commands to a
+selected host.
+This may be useful for testing error handling and simulating slow drain
+and other fabric issues.
+
+Setting a boolean of 1 for the jam_host attribute for a particular host
+ will discard the commands for that host.
+Reset back to 0 to stop the jamming.
+
+Enable host 4 to be jammed
+echo 1 > /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
+
+Disable jamming on host 4
+echo 0 > /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
diff --git a/drivers/scsi/qla2xxx/Kconfig b/drivers/scsi/qla2xxx/Kconfig
index 10aa18b..67c0d5a 100644
--- a/drivers/scsi/qla2xxx/Kconfig
+++ b/drivers/scsi/qla2xxx/Kconfig
@@ -36,3 +36,12 @@ config TCM_QLA2XXX
 	default n
 	---help---
 	Say Y here to enable the TCM_QLA2XXX fabric module for QLogic 24xx+ series target mode HBAs
+
+if TCM_QLA2XXX
+config TCM_QLA2XXX_DEBUG
+	bool "TCM_QLA2XXX fabric module DEBUG mode for QLogic 24xx+ series target mode HBAs"
+	default n
+	---help---
+	Say Y here to enable the TCM_QLA2XXX fabric module DEBUG for QLogic 24xx+ series target mode HBAs
+	This will include code to enable the SCSI command jammer
+endif
diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
index 1808a01..948224e 100644
--- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
+++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
@@ -457,6 +457,10 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha, struct qla_tgt_cmd *cmd,
 	struct se_cmd *se_cmd = &cmd->se_cmd;
 	struct se_session *se_sess;
 	struct qla_tgt_sess *sess;
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+	struct se_portal_group *se_tpg;
+	struct tcm_qla2xxx_tpg *tpg;
+#endif
 	int flags = TARGET_SCF_ACK_KREF;
 
 	if (bidi)
@@ -477,6 +481,15 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha, struct qla_tgt_cmd *cmd,
 		return -EINVAL;
 	}
 
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+	se_tpg = se_sess->se_tpg;
+	tpg = container_of(se_tpg, struct tcm_qla2xxx_tpg, se_tpg);
+	if (unlikely(tpg->tpg_attrib.jam_host)) {
+		/* return, and dont run target_submit_cmd,discarding command */
+		return 0;
+	}
+#endif
+
 	cmd->vha->tgt_counters.qla_core_sbt_cmd++;
 	return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
 				cmd->unpacked_lun, data_length, fcp_task_attr,
@@ -844,6 +857,9 @@ DEF_QLA_TPG_ATTRIB(cache_dynamic_acls);
 DEF_QLA_TPG_ATTRIB(demo_mode_write_protect);
 DEF_QLA_TPG_ATTRIB(prod_mode_write_protect);
 DEF_QLA_TPG_ATTRIB(demo_mode_login_only);
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+DEF_QLA_TPG_ATTRIB(jam_host);
+#endif
 
 static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
 	&tcm_qla2xxx_tpg_attrib_attr_generate_node_acls,
@@ -851,6 +867,9 @@ static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
 	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_write_protect,
 	&tcm_qla2xxx_tpg_attrib_attr_prod_mode_write_protect,
 	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_login_only,
+#ifdef CONFIG_TCM_QLA2XXX_DEBUG
+	&tcm_qla2xxx_tpg_attrib_attr_jam_host,
+#endif
 	NULL,
 };
 
@@ -1023,6 +1042,7 @@ static struct se_portal_group *tcm_qla2xxx_make_tpg(
 	tpg->tpg_attrib.demo_mode_write_protect = 1;
 	tpg->tpg_attrib.cache_dynamic_acls = 1;
 	tpg->tpg_attrib.demo_mode_login_only = 1;
+	tpg->tpg_attrib.jam_host = 0;
 
 	ret = core_tpg_register(wwn, &tpg->se_tpg, SCSI_PROTOCOL_FCP);
 	if (ret < 0) {
diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.h b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
index 3bbf4cb..37e026a 100644
--- a/drivers/scsi/qla2xxx/tcm_qla2xxx.h
+++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
@@ -34,6 +34,7 @@ struct tcm_qla2xxx_tpg_attrib {
 	int prod_mode_write_protect;
 	int demo_mode_login_only;
 	int fabric_prot_type;
+	int jam_host;
 };
 
 struct tcm_qla2xxx_tpg {
-- 
1.7.1


Laurence Oberman
Principal Software Maintenance Engineer
Red Hat Global Support Services

----- Original Message -----
From: "Nicholas A. Bellinger" <nab@linux-iscsi.org>
To: "Laurence Oberman" <loberman@redhat.com>
Cc: "Himanshu Madhani" <himanshu.madhani@qlogic.com>, "Bart Van Assche" <bart.vanassche@sandisk.com>, "linux-scsi" <linux-scsi@vger.kernel.org>, "target-devel" <target-devel@vger.kernel.org>, "Quinn Tran" <quinn.tran@qlogic.com>
Sent: Monday, April 4, 2016 4:54:11 PM
Subject: Re: [PATCH]  tcm_qla2xxx Add SCSI command jammer/discard capability to the tcm_qla2xxx module

On Sun, 2016-04-03 at 09:57 -0400, Laurence Oberman wrote:
> Hi Nicholas
> 
> Apologies for the top posting, that was in my haste to correct the prior patch that had the typo.
> When I investigated the attributes it looked like I would have had to create a store and a check function and call the check function each time.
> That was my lack of understanding of the functionality.
> 
> I also looked at your example and in my case I needed a way to set the attribute to a number matching the host#.
> When I tested this I was only able to set boolean values of 1 or 0 for the attributes and the definition of
> tcm_qla2xxx_tpg_attrib_##name##_store validates that only booleans of 1 or 0 are supported.
> 
> However after your email I then realized using a boolean on the endpoints below will work here.
> Thank you for taking the time to show me, it was very helpful.
> 
> sys]# find . -name jam_host
> ./kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
> ./kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:af/tpgt_1/attrib/jam_host
> 
> I tested this and here are the patches in the format you require.
> Hopefully this new functionality will be useful for others.
> I am not set for emailing directly from git.
> 
> Tested by: Laurence Oberman <loberman@redhat.com>
> Signed-off-by: Laurence Oberman <loberman@redhat.com>
> ---
>  drivers/scsi/qla2xxx/Kconfig       |   11 +++++++++++
>  drivers/scsi/qla2xxx/tcm_qla2xxx.c |   20 ++++++++++++++++++++
>  drivers/scsi/qla2xxx/tcm_qla2xxx.h |    1 +
>  3 files changed, 32 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/scsi/qla2xxx/Kconfig b/drivers/scsi/qla2xxx/Kconfig
> index 10aa18b..5110fab 100644
> --- a/drivers/scsi/qla2xxx/Kconfig
> +++ b/drivers/scsi/qla2xxx/Kconfig
> @@ -36,3 +36,14 @@ config TCM_QLA2XXX
>  	default n
>  	---help---
>  	Say Y here to enable the TCM_QLA2XXX fabric module for QLogic 24xx+ series target mode HBAs
> +
> +config TCM_QLA2XXX_DEBUG
> +	bool "TCM_QLA2XXX fabric module DEBUG mode for QLogic 24xx+ series target mode HBAs"
> +	depends on SCSI_QLA_FC && TARGET_CORE
> +	depends on LIBFC
> +	select BTREE
> +	default n
> +	---help---
> +	Say Y here to enable the TCM_QLA2XXX fabric module DEBUG for QLogic 24xx+ series target mode HBAs
> +	This will include code to enable the SCSI command jammer
> +

Instead of duplicating the 'depends' here for TCM_QLA2XXX, just do a:

if TCM_QLA2XXX

config TCM_QLA2XXX_DEBUG
...
...

endif

> diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> index 1808a01..411a450 100644
> --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> @@ -457,6 +457,10 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha, struct qla_tgt_cmd *cmd,
>  	struct se_cmd *se_cmd = &cmd->se_cmd;
>  	struct se_session *se_sess;
>  	struct qla_tgt_sess *sess;
> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> +        struct se_portal_group *se_tpg;
> +        struct tcm_qla2xxx_tpg *tpg;
> +#endif

Whitespace instead of TAB here.

>  	int flags = TARGET_SCF_ACK_KREF;
>  
>  	if (bidi)
> @@ -476,6 +480,15 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha, struct qla_tgt_cmd *cmd,
>  		pr_err("Unable to locate active struct se_session\n");
>  		return -EINVAL;
>  	}
> + 
> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> +	se_tpg = se_sess->se_tpg;
> +	tpg = container_of(se_tpg,struct tcm_qla2xxx_tpg, se_tpg);
> + 	if (unlikely(tpg->tpg_attrib.jam_host)) {
> + 		/* return, and dont run target_submit_cmd,discarding command */
> +                return 0;
> +	}
> +#endif

Whitespace instead of TABs here too.

>  
>  	cmd->vha->tgt_counters.qla_core_sbt_cmd++;
>  	return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
> @@ -844,6 +857,9 @@ DEF_QLA_TPG_ATTRIB(cache_dynamic_acls);
>  DEF_QLA_TPG_ATTRIB(demo_mode_write_protect);
>  DEF_QLA_TPG_ATTRIB(prod_mode_write_protect);
>  DEF_QLA_TPG_ATTRIB(demo_mode_login_only);
> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> +DEF_QLA_TPG_ATTRIB(jam_host);
> +#endif
>  
>  static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
>  	&tcm_qla2xxx_tpg_attrib_attr_generate_node_acls,
> @@ -851,6 +867,9 @@ static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
>  	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_write_protect,
>  	&tcm_qla2xxx_tpg_attrib_attr_prod_mode_write_protect,
>  	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_login_only,
> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> +        &tcm_qla2xxx_tpg_attrib_attr_jam_host,
> +#endif
>  	NULL,
>  };

Whitespace instead of TABs here too.



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

* Re: [PATCH]  tcm_qla2xxx Add SCSI command jammer/discard capability to the tcm_qla2xxx module
  2016-04-04 22:50                     ` Laurence Oberman
@ 2016-05-09 14:56                       ` Laurence Oberman
  2016-05-09 17:08                         ` Himanshu Madhani
  0 siblings, 1 reply; 16+ messages in thread
From: Laurence Oberman @ 2016-05-09 14:56 UTC (permalink / raw)
  To: Nicholas A. Bellinger
  Cc: Himanshu Madhani, Bart Van Assche, linux-scsi, target-devel, Quinn Tran



----- Original Message -----
> From: "Laurence Oberman" <loberman@redhat.com>
> To: "Nicholas A. Bellinger" <nab@linux-iscsi.org>
> Cc: "Himanshu Madhani" <himanshu.madhani@qlogic.com>, "Bart Van Assche" <bart.vanassche@sandisk.com>, "linux-scsi"
> <linux-scsi@vger.kernel.org>, "target-devel" <target-devel@vger.kernel.org>, "Quinn Tran" <quinn.tran@qlogic.com>
> Sent: Monday, April 4, 2016 6:50:03 PM
> Subject: Re: [PATCH]  tcm_qla2xxx Add SCSI command jammer/discard capability to the tcm_qla2xxx module
> 
> Hello Nicholas
> 
> Its fixed now.
> Many Thanks.
> 
> $ scripts/checkpatch.pl
> 0001-tcm_qla2xxx-Add-SCSI-command-jammer-discard-capabili.patch
> WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
> #12:
> new file mode 100644
> 
> total: 0 errors, 1 warnings, 91 lines checked
> 
> 0001-tcm_qla2xxx-Add-SCSI-command-jammer-discard-capabili.patch has style
> problems, please review.
> 
> NOTE: If any of the errors are false positives, please report
>       them to the maintainer, see CHECKPATCH in MAINTAINERS.
> 
> 
> 
> Tested by: Laurence Oberman <loberman@redhat.com>
> Signed-off-by: Laurence Oberman <loberman@redhat.com>
> ---
>  Documentation/scsi/tcm_qla2xxx.txt |   22 ++++++++++++++++++++++
>  drivers/scsi/qla2xxx/Kconfig       |    9 +++++++++
>  drivers/scsi/qla2xxx/tcm_qla2xxx.c |   20 ++++++++++++++++++++
>  drivers/scsi/qla2xxx/tcm_qla2xxx.h |    1 +
>  4 files changed, 52 insertions(+), 0 deletions(-)
>  create mode 100644 Documentation/scsi/tcm_qla2xxx.txt
> 
> diff --git a/Documentation/scsi/tcm_qla2xxx.txt
> b/Documentation/scsi/tcm_qla2xxx.txt
> new file mode 100644
> index 0000000..c3a670a
> --- /dev/null
> +++ b/Documentation/scsi/tcm_qla2xxx.txt
> @@ -0,0 +1,22 @@
> +tcm_qla2xxx jam_host attribute
> +------------------------------
> +There is now a new module endpoint atribute called jam_host
> +attribute: jam_host: boolean=0/1
> +This attribute and accompanying code is only included if the
> +Kconfig parameter TCM_QLA2XXX_DEBUG is set to Y
> +By default this jammer code and functionality is disabled
> +
> +Use this attribute to control the discarding of SCSI commands to a
> +selected host.
> +This may be useful for testing error handling and simulating slow drain
> +and other fabric issues.
> +
> +Setting a boolean of 1 for the jam_host attribute for a particular host
> + will discard the commands for that host.
> +Reset back to 0 to stop the jamming.
> +
> +Enable host 4 to be jammed
> +echo 1 >
> /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
> +
> +Disable jamming on host 4
> +echo 0 >
> /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
> diff --git a/drivers/scsi/qla2xxx/Kconfig b/drivers/scsi/qla2xxx/Kconfig
> index 10aa18b..67c0d5a 100644
> --- a/drivers/scsi/qla2xxx/Kconfig
> +++ b/drivers/scsi/qla2xxx/Kconfig
> @@ -36,3 +36,12 @@ config TCM_QLA2XXX
>  	default n
>  	---help---
>  	Say Y here to enable the TCM_QLA2XXX fabric module for QLogic 24xx+ series
>  	target mode HBAs
> +
> +if TCM_QLA2XXX
> +config TCM_QLA2XXX_DEBUG
> +	bool "TCM_QLA2XXX fabric module DEBUG mode for QLogic 24xx+ series target
> mode HBAs"
> +	default n
> +	---help---
> +	Say Y here to enable the TCM_QLA2XXX fabric module DEBUG for QLogic 24xx+
> series target mode HBAs
> +	This will include code to enable the SCSI command jammer
> +endif
> diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> index 1808a01..948224e 100644
> --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> @@ -457,6 +457,10 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha,
> struct qla_tgt_cmd *cmd,
>  	struct se_cmd *se_cmd = &cmd->se_cmd;
>  	struct se_session *se_sess;
>  	struct qla_tgt_sess *sess;
> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> +	struct se_portal_group *se_tpg;
> +	struct tcm_qla2xxx_tpg *tpg;
> +#endif
>  	int flags = TARGET_SCF_ACK_KREF;
>  
>  	if (bidi)
> @@ -477,6 +481,15 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha,
> struct qla_tgt_cmd *cmd,
>  		return -EINVAL;
>  	}
>  
> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> +	se_tpg = se_sess->se_tpg;
> +	tpg = container_of(se_tpg, struct tcm_qla2xxx_tpg, se_tpg);
> +	if (unlikely(tpg->tpg_attrib.jam_host)) {
> +		/* return, and dont run target_submit_cmd,discarding command */
> +		return 0;
> +	}
> +#endif
> +
>  	cmd->vha->tgt_counters.qla_core_sbt_cmd++;
>  	return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
>  				cmd->unpacked_lun, data_length, fcp_task_attr,
> @@ -844,6 +857,9 @@ DEF_QLA_TPG_ATTRIB(cache_dynamic_acls);
>  DEF_QLA_TPG_ATTRIB(demo_mode_write_protect);
>  DEF_QLA_TPG_ATTRIB(prod_mode_write_protect);
>  DEF_QLA_TPG_ATTRIB(demo_mode_login_only);
> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> +DEF_QLA_TPG_ATTRIB(jam_host);
> +#endif
>  
>  static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
>  	&tcm_qla2xxx_tpg_attrib_attr_generate_node_acls,
> @@ -851,6 +867,9 @@ static struct configfs_attribute
> *tcm_qla2xxx_tpg_attrib_attrs[] = {
>  	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_write_protect,
>  	&tcm_qla2xxx_tpg_attrib_attr_prod_mode_write_protect,
>  	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_login_only,
> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> +	&tcm_qla2xxx_tpg_attrib_attr_jam_host,
> +#endif
>  	NULL,
>  };
>  
> @@ -1023,6 +1042,7 @@ static struct se_portal_group *tcm_qla2xxx_make_tpg(
>  	tpg->tpg_attrib.demo_mode_write_protect = 1;
>  	tpg->tpg_attrib.cache_dynamic_acls = 1;
>  	tpg->tpg_attrib.demo_mode_login_only = 1;
> +	tpg->tpg_attrib.jam_host = 0;
>  
>  	ret = core_tpg_register(wwn, &tpg->se_tpg, SCSI_PROTOCOL_FCP);
>  	if (ret < 0) {
> diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.h
> b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
> index 3bbf4cb..37e026a 100644
> --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.h
> +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
> @@ -34,6 +34,7 @@ struct tcm_qla2xxx_tpg_attrib {
>  	int prod_mode_write_protect;
>  	int demo_mode_login_only;
>  	int fabric_prot_type;
> +	int jam_host;
>  };
>  
>  struct tcm_qla2xxx_tpg {
> --
> 1.7.1
> 
> 
> Laurence Oberman
> Principal Software Maintenance Engineer
> Red Hat Global Support Services
> 
> ----- Original Message -----
> From: "Nicholas A. Bellinger" <nab@linux-iscsi.org>
> To: "Laurence Oberman" <loberman@redhat.com>
> Cc: "Himanshu Madhani" <himanshu.madhani@qlogic.com>, "Bart Van Assche"
> <bart.vanassche@sandisk.com>, "linux-scsi" <linux-scsi@vger.kernel.org>,
> "target-devel" <target-devel@vger.kernel.org>, "Quinn Tran"
> <quinn.tran@qlogic.com>
> Sent: Monday, April 4, 2016 4:54:11 PM
> Subject: Re: [PATCH]  tcm_qla2xxx Add SCSI command jammer/discard capability
> to the tcm_qla2xxx module
> 
> On Sun, 2016-04-03 at 09:57 -0400, Laurence Oberman wrote:
> > Hi Nicholas
> > 
> > Apologies for the top posting, that was in my haste to correct the prior
> > patch that had the typo.
> > When I investigated the attributes it looked like I would have had to
> > create a store and a check function and call the check function each time.
> > That was my lack of understanding of the functionality.
> > 
> > I also looked at your example and in my case I needed a way to set the
> > attribute to a number matching the host#.
> > When I tested this I was only able to set boolean values of 1 or 0 for the
> > attributes and the definition of
> > tcm_qla2xxx_tpg_attrib_##name##_store validates that only booleans of 1 or
> > 0 are supported.
> > 
> > However after your email I then realized using a boolean on the endpoints
> > below will work here.
> > Thank you for taking the time to show me, it was very helpful.
> > 
> > sys]# find . -name jam_host
> > ./kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
> > ./kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:af/tpgt_1/attrib/jam_host
> > 
> > I tested this and here are the patches in the format you require.
> > Hopefully this new functionality will be useful for others.
> > I am not set for emailing directly from git.
> > 
> > Tested by: Laurence Oberman <loberman@redhat.com>
> > Signed-off-by: Laurence Oberman <loberman@redhat.com>
> > ---
> >  drivers/scsi/qla2xxx/Kconfig       |   11 +++++++++++
> >  drivers/scsi/qla2xxx/tcm_qla2xxx.c |   20 ++++++++++++++++++++
> >  drivers/scsi/qla2xxx/tcm_qla2xxx.h |    1 +
> >  3 files changed, 32 insertions(+), 0 deletions(-)
> > 
> > diff --git a/drivers/scsi/qla2xxx/Kconfig b/drivers/scsi/qla2xxx/Kconfig
> > index 10aa18b..5110fab 100644
> > --- a/drivers/scsi/qla2xxx/Kconfig
> > +++ b/drivers/scsi/qla2xxx/Kconfig
> > @@ -36,3 +36,14 @@ config TCM_QLA2XXX
> >  	default n
> >  	---help---
> >  	Say Y here to enable the TCM_QLA2XXX fabric module for QLogic 24xx+
> >  	series target mode HBAs
> > +
> > +config TCM_QLA2XXX_DEBUG
> > +	bool "TCM_QLA2XXX fabric module DEBUG mode for QLogic 24xx+ series target
> > mode HBAs"
> > +	depends on SCSI_QLA_FC && TARGET_CORE
> > +	depends on LIBFC
> > +	select BTREE
> > +	default n
> > +	---help---
> > +	Say Y here to enable the TCM_QLA2XXX fabric module DEBUG for QLogic 24xx+
> > series target mode HBAs
> > +	This will include code to enable the SCSI command jammer
> > +
> 
> Instead of duplicating the 'depends' here for TCM_QLA2XXX, just do a:
> 
> if TCM_QLA2XXX
> 
> config TCM_QLA2XXX_DEBUG
> ...
> ...
> 
> endif
> 
> > diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> > b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> > index 1808a01..411a450 100644
> > --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> > +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> > @@ -457,6 +457,10 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t
> > *vha, struct qla_tgt_cmd *cmd,
> >  	struct se_cmd *se_cmd = &cmd->se_cmd;
> >  	struct se_session *se_sess;
> >  	struct qla_tgt_sess *sess;
> > +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> > +        struct se_portal_group *se_tpg;
> > +        struct tcm_qla2xxx_tpg *tpg;
> > +#endif
> 
> Whitespace instead of TAB here.
> 
> >  	int flags = TARGET_SCF_ACK_KREF;
> >  
> >  	if (bidi)
> > @@ -476,6 +480,15 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t
> > *vha, struct qla_tgt_cmd *cmd,
> >  		pr_err("Unable to locate active struct se_session\n");
> >  		return -EINVAL;
> >  	}
> > +
> > +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> > +	se_tpg = se_sess->se_tpg;
> > +	tpg = container_of(se_tpg,struct tcm_qla2xxx_tpg, se_tpg);
> > + 	if (unlikely(tpg->tpg_attrib.jam_host)) {
> > + 		/* return, and dont run target_submit_cmd,discarding command */
> > +                return 0;
> > +	}
> > +#endif
> 
> Whitespace instead of TABs here too.
> 
> >  
> >  	cmd->vha->tgt_counters.qla_core_sbt_cmd++;
> >  	return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
> > @@ -844,6 +857,9 @@ DEF_QLA_TPG_ATTRIB(cache_dynamic_acls);
> >  DEF_QLA_TPG_ATTRIB(demo_mode_write_protect);
> >  DEF_QLA_TPG_ATTRIB(prod_mode_write_protect);
> >  DEF_QLA_TPG_ATTRIB(demo_mode_login_only);
> > +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> > +DEF_QLA_TPG_ATTRIB(jam_host);
> > +#endif
> >  
> >  static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
> >  	&tcm_qla2xxx_tpg_attrib_attr_generate_node_acls,
> > @@ -851,6 +867,9 @@ static struct configfs_attribute
> > *tcm_qla2xxx_tpg_attrib_attrs[] = {
> >  	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_write_protect,
> >  	&tcm_qla2xxx_tpg_attrib_attr_prod_mode_write_protect,
> >  	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_login_only,
> > +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> > +        &tcm_qla2xxx_tpg_attrib_attr_jam_host,
> > +#endif
> >  	NULL,
> >  };
> 
> Whitespace instead of TABs here too.
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

Hello Himanshu, Quinn

Is this patch good now to be taken.

Thanks
Laurence


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

* Re: [PATCH]  tcm_qla2xxx Add SCSI command jammer/discard capability to the tcm_qla2xxx module
  2016-05-09 14:56                       ` Laurence Oberman
@ 2016-05-09 17:08                         ` Himanshu Madhani
  2016-05-25 20:12                           ` Laurence Oberman
  0 siblings, 1 reply; 16+ messages in thread
From: Himanshu Madhani @ 2016-05-09 17:08 UTC (permalink / raw)
  To: Laurence Oberman, Nicholas A. Bellinger
  Cc: Bart Van Assche, linux-scsi, target-devel, Quinn Tran

On 5/9/16, 7:56 AM, "Laurence Oberman" <loberman@redhat.com> wrote:



>
>
>----- Original Message -----
>> From: "Laurence Oberman" <loberman@redhat.com>
>> To: "Nicholas A. Bellinger" <nab@linux-iscsi.org>
>> Cc: "Himanshu Madhani" <himanshu.madhani@qlogic.com>, "Bart Van Assche" <bart.vanassche@sandisk.com>, "linux-scsi"
>> <linux-scsi@vger.kernel.org>, "target-devel" <target-devel@vger.kernel.org>, "Quinn Tran" <quinn.tran@qlogic.com>
>> Sent: Monday, April 4, 2016 6:50:03 PM
>> Subject: Re: [PATCH]  tcm_qla2xxx Add SCSI command jammer/discard capability to the tcm_qla2xxx module
>> 
>> Hello Nicholas
>> 
>> Its fixed now.
>> Many Thanks.
>> 
>> $ scripts/checkpatch.pl
>> 0001-tcm_qla2xxx-Add-SCSI-command-jammer-discard-capabili.patch
>> WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
>> #12:
>> new file mode 100644
>> 
>> total: 0 errors, 1 warnings, 91 lines checked
>> 
>> 0001-tcm_qla2xxx-Add-SCSI-command-jammer-discard-capabili.patch has style
>> problems, please review.
>> 
>> NOTE: If any of the errors are false positives, please report
>>       them to the maintainer, see CHECKPATCH in MAINTAINERS.
>> 
>> 
>> 
>> Tested by: Laurence Oberman <loberman@redhat.com>
>> Signed-off-by: Laurence Oberman <loberman@redhat.com>
>> ---
>>  Documentation/scsi/tcm_qla2xxx.txt |   22 ++++++++++++++++++++++
>>  drivers/scsi/qla2xxx/Kconfig       |    9 +++++++++
>>  drivers/scsi/qla2xxx/tcm_qla2xxx.c |   20 ++++++++++++++++++++
>>  drivers/scsi/qla2xxx/tcm_qla2xxx.h |    1 +
>>  4 files changed, 52 insertions(+), 0 deletions(-)
>>  create mode 100644 Documentation/scsi/tcm_qla2xxx.txt
>> 
>> diff --git a/Documentation/scsi/tcm_qla2xxx.txt
>> b/Documentation/scsi/tcm_qla2xxx.txt
>> new file mode 100644
>> index 0000000..c3a670a
>> --- /dev/null
>> +++ b/Documentation/scsi/tcm_qla2xxx.txt
>> @@ -0,0 +1,22 @@
>> +tcm_qla2xxx jam_host attribute
>> +------------------------------
>> +There is now a new module endpoint atribute called jam_host
>> +attribute: jam_host: boolean=0/1
>> +This attribute and accompanying code is only included if the
>> +Kconfig parameter TCM_QLA2XXX_DEBUG is set to Y
>> +By default this jammer code and functionality is disabled
>> +
>> +Use this attribute to control the discarding of SCSI commands to a
>> +selected host.
>> +This may be useful for testing error handling and simulating slow drain
>> +and other fabric issues.
>> +
>> +Setting a boolean of 1 for the jam_host attribute for a particular host
>> + will discard the commands for that host.
>> +Reset back to 0 to stop the jamming.
>> +
>> +Enable host 4 to be jammed
>> +echo 1 >
>> /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
>> +
>> +Disable jamming on host 4
>> +echo 0 >
>> /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
>> diff --git a/drivers/scsi/qla2xxx/Kconfig b/drivers/scsi/qla2xxx/Kconfig
>> index 10aa18b..67c0d5a 100644
>> --- a/drivers/scsi/qla2xxx/Kconfig
>> +++ b/drivers/scsi/qla2xxx/Kconfig
>> @@ -36,3 +36,12 @@ config TCM_QLA2XXX
>>  	default n
>>  	---help---
>>  	Say Y here to enable the TCM_QLA2XXX fabric module for QLogic 24xx+ series
>>  	target mode HBAs
>> +
>> +if TCM_QLA2XXX
>> +config TCM_QLA2XXX_DEBUG
>> +	bool "TCM_QLA2XXX fabric module DEBUG mode for QLogic 24xx+ series target
>> mode HBAs"
>> +	default n
>> +	---help---
>> +	Say Y here to enable the TCM_QLA2XXX fabric module DEBUG for QLogic 24xx+
>> series target mode HBAs
>> +	This will include code to enable the SCSI command jammer
>> +endif
>> diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
>> b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
>> index 1808a01..948224e 100644
>> --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
>> +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
>> @@ -457,6 +457,10 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha,
>> struct qla_tgt_cmd *cmd,
>>  	struct se_cmd *se_cmd = &cmd->se_cmd;
>>  	struct se_session *se_sess;
>>  	struct qla_tgt_sess *sess;
>> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
>> +	struct se_portal_group *se_tpg;
>> +	struct tcm_qla2xxx_tpg *tpg;
>> +#endif
>>  	int flags = TARGET_SCF_ACK_KREF;
>>  
>>  	if (bidi)
>> @@ -477,6 +481,15 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha,
>> struct qla_tgt_cmd *cmd,
>>  		return -EINVAL;
>>  	}
>>  
>> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
>> +	se_tpg = se_sess->se_tpg;
>> +	tpg = container_of(se_tpg, struct tcm_qla2xxx_tpg, se_tpg);
>> +	if (unlikely(tpg->tpg_attrib.jam_host)) {
>> +		/* return, and dont run target_submit_cmd,discarding command */
>> +		return 0;
>> +	}
>> +#endif
>> +
>>  	cmd->vha->tgt_counters.qla_core_sbt_cmd++;
>>  	return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
>>  				cmd->unpacked_lun, data_length, fcp_task_attr,
>> @@ -844,6 +857,9 @@ DEF_QLA_TPG_ATTRIB(cache_dynamic_acls);
>>  DEF_QLA_TPG_ATTRIB(demo_mode_write_protect);
>>  DEF_QLA_TPG_ATTRIB(prod_mode_write_protect);
>>  DEF_QLA_TPG_ATTRIB(demo_mode_login_only);
>> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
>> +DEF_QLA_TPG_ATTRIB(jam_host);
>> +#endif
>>  
>>  static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
>>  	&tcm_qla2xxx_tpg_attrib_attr_generate_node_acls,
>> @@ -851,6 +867,9 @@ static struct configfs_attribute
>> *tcm_qla2xxx_tpg_attrib_attrs[] = {
>>  	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_write_protect,
>>  	&tcm_qla2xxx_tpg_attrib_attr_prod_mode_write_protect,
>>  	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_login_only,
>> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
>> +	&tcm_qla2xxx_tpg_attrib_attr_jam_host,
>> +#endif
>>  	NULL,
>>  };
>>  
>> @@ -1023,6 +1042,7 @@ static struct se_portal_group *tcm_qla2xxx_make_tpg(
>>  	tpg->tpg_attrib.demo_mode_write_protect = 1;
>>  	tpg->tpg_attrib.cache_dynamic_acls = 1;
>>  	tpg->tpg_attrib.demo_mode_login_only = 1;
>> +	tpg->tpg_attrib.jam_host = 0;
>>  
>>  	ret = core_tpg_register(wwn, &tpg->se_tpg, SCSI_PROTOCOL_FCP);
>>  	if (ret < 0) {
>> diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.h
>> b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
>> index 3bbf4cb..37e026a 100644
>> --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.h
>> +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
>> @@ -34,6 +34,7 @@ struct tcm_qla2xxx_tpg_attrib {
>>  	int prod_mode_write_protect;
>>  	int demo_mode_login_only;
>>  	int fabric_prot_type;
>> +	int jam_host;
>>  };
>>  
>>  struct tcm_qla2xxx_tpg {
>> --
>> 1.7.1
>> 
>> 
>> Laurence Oberman
>> Principal Software Maintenance Engineer
>> Red Hat Global Support Services
>> 
>> ----- Original Message -----
>> From: "Nicholas A. Bellinger" <nab@linux-iscsi.org>
>> To: "Laurence Oberman" <loberman@redhat.com>
>> Cc: "Himanshu Madhani" <himanshu.madhani@qlogic.com>, "Bart Van Assche"
>> <bart.vanassche@sandisk.com>, "linux-scsi" <linux-scsi@vger.kernel.org>,
>> "target-devel" <target-devel@vger.kernel.org>, "Quinn Tran"
>> <quinn.tran@qlogic.com>
>> Sent: Monday, April 4, 2016 4:54:11 PM
>> Subject: Re: [PATCH]  tcm_qla2xxx Add SCSI command jammer/discard capability
>> to the tcm_qla2xxx module
>> 
>> On Sun, 2016-04-03 at 09:57 -0400, Laurence Oberman wrote:
>> > Hi Nicholas
>> > 
>> > Apologies for the top posting, that was in my haste to correct the prior
>> > patch that had the typo.
>> > When I investigated the attributes it looked like I would have had to
>> > create a store and a check function and call the check function each time.
>> > That was my lack of understanding of the functionality.
>> > 
>> > I also looked at your example and in my case I needed a way to set the
>> > attribute to a number matching the host#.
>> > When I tested this I was only able to set boolean values of 1 or 0 for the
>> > attributes and the definition of
>> > tcm_qla2xxx_tpg_attrib_##name##_store validates that only booleans of 1 or
>> > 0 are supported.
>> > 
>> > However after your email I then realized using a boolean on the endpoints
>> > below will work here.
>> > Thank you for taking the time to show me, it was very helpful.
>> > 
>> > sys]# find . -name jam_host
>> > ./kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
>> > ./kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:af/tpgt_1/attrib/jam_host
>> > 
>> > I tested this and here are the patches in the format you require.
>> > Hopefully this new functionality will be useful for others.
>> > I am not set for emailing directly from git.
>> > 
>> > Tested by: Laurence Oberman <loberman@redhat.com>
>> > Signed-off-by: Laurence Oberman <loberman@redhat.com>
>> > ---
>> >  drivers/scsi/qla2xxx/Kconfig       |   11 +++++++++++
>> >  drivers/scsi/qla2xxx/tcm_qla2xxx.c |   20 ++++++++++++++++++++
>> >  drivers/scsi/qla2xxx/tcm_qla2xxx.h |    1 +
>> >  3 files changed, 32 insertions(+), 0 deletions(-)
>> > 
>> > diff --git a/drivers/scsi/qla2xxx/Kconfig b/drivers/scsi/qla2xxx/Kconfig
>> > index 10aa18b..5110fab 100644
>> > --- a/drivers/scsi/qla2xxx/Kconfig
>> > +++ b/drivers/scsi/qla2xxx/Kconfig
>> > @@ -36,3 +36,14 @@ config TCM_QLA2XXX
>> >  	default n
>> >  	---help---
>> >  	Say Y here to enable the TCM_QLA2XXX fabric module for QLogic 24xx+
>> >  	series target mode HBAs
>> > +
>> > +config TCM_QLA2XXX_DEBUG
>> > +	bool "TCM_QLA2XXX fabric module DEBUG mode for QLogic 24xx+ series target
>> > mode HBAs"
>> > +	depends on SCSI_QLA_FC && TARGET_CORE
>> > +	depends on LIBFC
>> > +	select BTREE
>> > +	default n
>> > +	---help---
>> > +	Say Y here to enable the TCM_QLA2XXX fabric module DEBUG for QLogic 24xx+
>> > series target mode HBAs
>> > +	This will include code to enable the SCSI command jammer
>> > +
>> 
>> Instead of duplicating the 'depends' here for TCM_QLA2XXX, just do a:
>> 
>> if TCM_QLA2XXX
>> 
>> config TCM_QLA2XXX_DEBUG
>> ...
>> ...
>> 
>> endif
>> 
>> > diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
>> > b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
>> > index 1808a01..411a450 100644
>> > --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
>> > +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
>> > @@ -457,6 +457,10 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t
>> > *vha, struct qla_tgt_cmd *cmd,
>> >  	struct se_cmd *se_cmd = &cmd->se_cmd;
>> >  	struct se_session *se_sess;
>> >  	struct qla_tgt_sess *sess;
>> > +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
>> > +        struct se_portal_group *se_tpg;
>> > +        struct tcm_qla2xxx_tpg *tpg;
>> > +#endif
>> 
>> Whitespace instead of TAB here.
>> 
>> >  	int flags = TARGET_SCF_ACK_KREF;
>> >  
>> >  	if (bidi)
>> > @@ -476,6 +480,15 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t
>> > *vha, struct qla_tgt_cmd *cmd,
>> >  		pr_err("Unable to locate active struct se_session\n");
>> >  		return -EINVAL;
>> >  	}
>> > +
>> > +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
>> > +	se_tpg = se_sess->se_tpg;
>> > +	tpg = container_of(se_tpg,struct tcm_qla2xxx_tpg, se_tpg);
>> > + 	if (unlikely(tpg->tpg_attrib.jam_host)) {
>> > + 		/* return, and dont run target_submit_cmd,discarding command */
>> > +                return 0;
>> > +	}
>> > +#endif
>> 
>> Whitespace instead of TABs here too.
>> 
>> >  
>> >  	cmd->vha->tgt_counters.qla_core_sbt_cmd++;
>> >  	return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
>> > @@ -844,6 +857,9 @@ DEF_QLA_TPG_ATTRIB(cache_dynamic_acls);
>> >  DEF_QLA_TPG_ATTRIB(demo_mode_write_protect);
>> >  DEF_QLA_TPG_ATTRIB(prod_mode_write_protect);
>> >  DEF_QLA_TPG_ATTRIB(demo_mode_login_only);
>> > +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
>> > +DEF_QLA_TPG_ATTRIB(jam_host);
>> > +#endif
>> >  
>> >  static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
>> >  	&tcm_qla2xxx_tpg_attrib_attr_generate_node_acls,
>> > @@ -851,6 +867,9 @@ static struct configfs_attribute
>> > *tcm_qla2xxx_tpg_attrib_attrs[] = {
>> >  	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_write_protect,
>> >  	&tcm_qla2xxx_tpg_attrib_attr_prod_mode_write_protect,
>> >  	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_login_only,
>> > +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
>> > +        &tcm_qla2xxx_tpg_attrib_attr_jam_host,
>> > +#endif
>> >  	NULL,
>> >  };
>> 
>> Whitespace instead of TABs here too.
>> 
>> 
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> 
>
>Hello Himanshu, Quinn
>
>Is this patch good now to be taken.
>
>Thanks
>Laurence
>

Looks Good. 

Acked-by: Himanshu Madhani <himanshu.madhani@qlogic.com>

>

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

* Re: [PATCH]  tcm_qla2xxx Add SCSI command jammer/discard capability to the tcm_qla2xxx module
  2016-05-09 17:08                         ` Himanshu Madhani
@ 2016-05-25 20:12                           ` Laurence Oberman
  2016-05-26  3:07                             ` Nicholas A. Bellinger
  0 siblings, 1 reply; 16+ messages in thread
From: Laurence Oberman @ 2016-05-25 20:12 UTC (permalink / raw)
  To: Himanshu Madhani
  Cc: Nicholas A. Bellinger, Bart Van Assche, linux-scsi, target-devel,
	Quinn Tran



----- Original Message -----
> From: "Himanshu Madhani" <himanshu.madhani@qlogic.com>
> To: "Laurence Oberman" <loberman@redhat.com>, "Nicholas A. Bellinger" <nab@linux-iscsi.org>
> Cc: "Bart Van Assche" <bart.vanassche@sandisk.com>, "linux-scsi" <linux-scsi@vger.kernel.org>, "target-devel"
> <target-devel@vger.kernel.org>, "Quinn Tran" <quinn.tran@qlogic.com>
> Sent: Monday, May 9, 2016 1:08:36 PM
> Subject: Re: [PATCH]  tcm_qla2xxx Add SCSI command jammer/discard capability to the tcm_qla2xxx module
> 
> On 5/9/16, 7:56 AM, "Laurence Oberman" <loberman@redhat.com> wrote:
> 
> 
> 
> >
> >
> >----- Original Message -----
> >> From: "Laurence Oberman" <loberman@redhat.com>
> >> To: "Nicholas A. Bellinger" <nab@linux-iscsi.org>
> >> Cc: "Himanshu Madhani" <himanshu.madhani@qlogic.com>, "Bart Van Assche"
> >> <bart.vanassche@sandisk.com>, "linux-scsi"
> >> <linux-scsi@vger.kernel.org>, "target-devel"
> >> <target-devel@vger.kernel.org>, "Quinn Tran" <quinn.tran@qlogic.com>
> >> Sent: Monday, April 4, 2016 6:50:03 PM
> >> Subject: Re: [PATCH]  tcm_qla2xxx Add SCSI command jammer/discard
> >> capability to the tcm_qla2xxx module
> >> 
> >> Hello Nicholas
> >> 
> >> Its fixed now.
> >> Many Thanks.
> >> 
> >> $ scripts/checkpatch.pl
> >> 0001-tcm_qla2xxx-Add-SCSI-command-jammer-discard-capabili.patch
> >> WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
> >> #12:
> >> new file mode 100644
> >> 
> >> total: 0 errors, 1 warnings, 91 lines checked
> >> 
> >> 0001-tcm_qla2xxx-Add-SCSI-command-jammer-discard-capabili.patch has style
> >> problems, please review.
> >> 
> >> NOTE: If any of the errors are false positives, please report
> >>       them to the maintainer, see CHECKPATCH in MAINTAINERS.
> >> 
> >> 
> >> 
> >> Tested by: Laurence Oberman <loberman@redhat.com>
> >> Signed-off-by: Laurence Oberman <loberman@redhat.com>
> >> ---
> >>  Documentation/scsi/tcm_qla2xxx.txt |   22 ++++++++++++++++++++++
> >>  drivers/scsi/qla2xxx/Kconfig       |    9 +++++++++
> >>  drivers/scsi/qla2xxx/tcm_qla2xxx.c |   20 ++++++++++++++++++++
> >>  drivers/scsi/qla2xxx/tcm_qla2xxx.h |    1 +
> >>  4 files changed, 52 insertions(+), 0 deletions(-)
> >>  create mode 100644 Documentation/scsi/tcm_qla2xxx.txt
> >> 
> >> diff --git a/Documentation/scsi/tcm_qla2xxx.txt
> >> b/Documentation/scsi/tcm_qla2xxx.txt
> >> new file mode 100644
> >> index 0000000..c3a670a
> >> --- /dev/null
> >> +++ b/Documentation/scsi/tcm_qla2xxx.txt
> >> @@ -0,0 +1,22 @@
> >> +tcm_qla2xxx jam_host attribute
> >> +------------------------------
> >> +There is now a new module endpoint atribute called jam_host
> >> +attribute: jam_host: boolean=0/1
> >> +This attribute and accompanying code is only included if the
> >> +Kconfig parameter TCM_QLA2XXX_DEBUG is set to Y
> >> +By default this jammer code and functionality is disabled
> >> +
> >> +Use this attribute to control the discarding of SCSI commands to a
> >> +selected host.
> >> +This may be useful for testing error handling and simulating slow drain
> >> +and other fabric issues.
> >> +
> >> +Setting a boolean of 1 for the jam_host attribute for a particular host
> >> + will discard the commands for that host.
> >> +Reset back to 0 to stop the jamming.
> >> +
> >> +Enable host 4 to be jammed
> >> +echo 1 >
> >> /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
> >> +
> >> +Disable jamming on host 4
> >> +echo 0 >
> >> /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
> >> diff --git a/drivers/scsi/qla2xxx/Kconfig b/drivers/scsi/qla2xxx/Kconfig
> >> index 10aa18b..67c0d5a 100644
> >> --- a/drivers/scsi/qla2xxx/Kconfig
> >> +++ b/drivers/scsi/qla2xxx/Kconfig
> >> @@ -36,3 +36,12 @@ config TCM_QLA2XXX
> >>  	default n
> >>  	---help---
> >>  	Say Y here to enable the TCM_QLA2XXX fabric module for QLogic 24xx+
> >>  	series
> >>  	target mode HBAs
> >> +
> >> +if TCM_QLA2XXX
> >> +config TCM_QLA2XXX_DEBUG
> >> +	bool "TCM_QLA2XXX fabric module DEBUG mode for QLogic 24xx+ series
> >> target
> >> mode HBAs"
> >> +	default n
> >> +	---help---
> >> +	Say Y here to enable the TCM_QLA2XXX fabric module DEBUG for QLogic
> >> 24xx+
> >> series target mode HBAs
> >> +	This will include code to enable the SCSI command jammer
> >> +endif
> >> diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> >> b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> >> index 1808a01..948224e 100644
> >> --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> >> +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> >> @@ -457,6 +457,10 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t
> >> *vha,
> >> struct qla_tgt_cmd *cmd,
> >>  	struct se_cmd *se_cmd = &cmd->se_cmd;
> >>  	struct se_session *se_sess;
> >>  	struct qla_tgt_sess *sess;
> >> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> >> +	struct se_portal_group *se_tpg;
> >> +	struct tcm_qla2xxx_tpg *tpg;
> >> +#endif
> >>  	int flags = TARGET_SCF_ACK_KREF;
> >>  
> >>  	if (bidi)
> >> @@ -477,6 +481,15 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t
> >> *vha,
> >> struct qla_tgt_cmd *cmd,
> >>  		return -EINVAL;
> >>  	}
> >>  
> >> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> >> +	se_tpg = se_sess->se_tpg;
> >> +	tpg = container_of(se_tpg, struct tcm_qla2xxx_tpg, se_tpg);
> >> +	if (unlikely(tpg->tpg_attrib.jam_host)) {
> >> +		/* return, and dont run target_submit_cmd,discarding command */
> >> +		return 0;
> >> +	}
> >> +#endif
> >> +
> >>  	cmd->vha->tgt_counters.qla_core_sbt_cmd++;
> >>  	return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
> >>  				cmd->unpacked_lun, data_length, fcp_task_attr,
> >> @@ -844,6 +857,9 @@ DEF_QLA_TPG_ATTRIB(cache_dynamic_acls);
> >>  DEF_QLA_TPG_ATTRIB(demo_mode_write_protect);
> >>  DEF_QLA_TPG_ATTRIB(prod_mode_write_protect);
> >>  DEF_QLA_TPG_ATTRIB(demo_mode_login_only);
> >> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> >> +DEF_QLA_TPG_ATTRIB(jam_host);
> >> +#endif
> >>  
> >>  static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
> >>  	&tcm_qla2xxx_tpg_attrib_attr_generate_node_acls,
> >> @@ -851,6 +867,9 @@ static struct configfs_attribute
> >> *tcm_qla2xxx_tpg_attrib_attrs[] = {
> >>  	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_write_protect,
> >>  	&tcm_qla2xxx_tpg_attrib_attr_prod_mode_write_protect,
> >>  	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_login_only,
> >> +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> >> +	&tcm_qla2xxx_tpg_attrib_attr_jam_host,
> >> +#endif
> >>  	NULL,
> >>  };
> >>  
> >> @@ -1023,6 +1042,7 @@ static struct se_portal_group *tcm_qla2xxx_make_tpg(
> >>  	tpg->tpg_attrib.demo_mode_write_protect = 1;
> >>  	tpg->tpg_attrib.cache_dynamic_acls = 1;
> >>  	tpg->tpg_attrib.demo_mode_login_only = 1;
> >> +	tpg->tpg_attrib.jam_host = 0;
> >>  
> >>  	ret = core_tpg_register(wwn, &tpg->se_tpg, SCSI_PROTOCOL_FCP);
> >>  	if (ret < 0) {
> >> diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.h
> >> b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
> >> index 3bbf4cb..37e026a 100644
> >> --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.h
> >> +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
> >> @@ -34,6 +34,7 @@ struct tcm_qla2xxx_tpg_attrib {
> >>  	int prod_mode_write_protect;
> >>  	int demo_mode_login_only;
> >>  	int fabric_prot_type;
> >> +	int jam_host;
> >>  };
> >>  
> >>  struct tcm_qla2xxx_tpg {
> >> --
> >> 1.7.1
> >> 
> >> 
> >> Laurence Oberman
> >> Principal Software Maintenance Engineer
> >> Red Hat Global Support Services
> >> 
> >> ----- Original Message -----
> >> From: "Nicholas A. Bellinger" <nab@linux-iscsi.org>
> >> To: "Laurence Oberman" <loberman@redhat.com>
> >> Cc: "Himanshu Madhani" <himanshu.madhani@qlogic.com>, "Bart Van Assche"
> >> <bart.vanassche@sandisk.com>, "linux-scsi" <linux-scsi@vger.kernel.org>,
> >> "target-devel" <target-devel@vger.kernel.org>, "Quinn Tran"
> >> <quinn.tran@qlogic.com>
> >> Sent: Monday, April 4, 2016 4:54:11 PM
> >> Subject: Re: [PATCH]  tcm_qla2xxx Add SCSI command jammer/discard
> >> capability
> >> to the tcm_qla2xxx module
> >> 
> >> On Sun, 2016-04-03 at 09:57 -0400, Laurence Oberman wrote:
> >> > Hi Nicholas
> >> > 
> >> > Apologies for the top posting, that was in my haste to correct the prior
> >> > patch that had the typo.
> >> > When I investigated the attributes it looked like I would have had to
> >> > create a store and a check function and call the check function each
> >> > time.
> >> > That was my lack of understanding of the functionality.
> >> > 
> >> > I also looked at your example and in my case I needed a way to set the
> >> > attribute to a number matching the host#.
> >> > When I tested this I was only able to set boolean values of 1 or 0 for
> >> > the
> >> > attributes and the definition of
> >> > tcm_qla2xxx_tpg_attrib_##name##_store validates that only booleans of 1
> >> > or
> >> > 0 are supported.
> >> > 
> >> > However after your email I then realized using a boolean on the
> >> > endpoints
> >> > below will work here.
> >> > Thank you for taking the time to show me, it was very helpful.
> >> > 
> >> > sys]# find . -name jam_host
> >> > ./kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
> >> > ./kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:af/tpgt_1/attrib/jam_host
> >> > 
> >> > I tested this and here are the patches in the format you require.
> >> > Hopefully this new functionality will be useful for others.
> >> > I am not set for emailing directly from git.
> >> > 
> >> > Tested by: Laurence Oberman <loberman@redhat.com>
> >> > Signed-off-by: Laurence Oberman <loberman@redhat.com>
> >> > ---
> >> >  drivers/scsi/qla2xxx/Kconfig       |   11 +++++++++++
> >> >  drivers/scsi/qla2xxx/tcm_qla2xxx.c |   20 ++++++++++++++++++++
> >> >  drivers/scsi/qla2xxx/tcm_qla2xxx.h |    1 +
> >> >  3 files changed, 32 insertions(+), 0 deletions(-)
> >> > 
> >> > diff --git a/drivers/scsi/qla2xxx/Kconfig b/drivers/scsi/qla2xxx/Kconfig
> >> > index 10aa18b..5110fab 100644
> >> > --- a/drivers/scsi/qla2xxx/Kconfig
> >> > +++ b/drivers/scsi/qla2xxx/Kconfig
> >> > @@ -36,3 +36,14 @@ config TCM_QLA2XXX
> >> >  	default n
> >> >  	---help---
> >> >  	Say Y here to enable the TCM_QLA2XXX fabric module for QLogic 24xx+
> >> >  	series target mode HBAs
> >> > +
> >> > +config TCM_QLA2XXX_DEBUG
> >> > +	bool "TCM_QLA2XXX fabric module DEBUG mode for QLogic 24xx+ series
> >> > target
> >> > mode HBAs"
> >> > +	depends on SCSI_QLA_FC && TARGET_CORE
> >> > +	depends on LIBFC
> >> > +	select BTREE
> >> > +	default n
> >> > +	---help---
> >> > +	Say Y here to enable the TCM_QLA2XXX fabric module DEBUG for QLogic
> >> > 24xx+
> >> > series target mode HBAs
> >> > +	This will include code to enable the SCSI command jammer
> >> > +
> >> 
> >> Instead of duplicating the 'depends' here for TCM_QLA2XXX, just do a:
> >> 
> >> if TCM_QLA2XXX
> >> 
> >> config TCM_QLA2XXX_DEBUG
> >> ...
> >> ...
> >> 
> >> endif
> >> 
> >> > diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> >> > b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> >> > index 1808a01..411a450 100644
> >> > --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> >> > +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
> >> > @@ -457,6 +457,10 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t
> >> > *vha, struct qla_tgt_cmd *cmd,
> >> >  	struct se_cmd *se_cmd = &cmd->se_cmd;
> >> >  	struct se_session *se_sess;
> >> >  	struct qla_tgt_sess *sess;
> >> > +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> >> > +        struct se_portal_group *se_tpg;
> >> > +        struct tcm_qla2xxx_tpg *tpg;
> >> > +#endif
> >> 
> >> Whitespace instead of TAB here.
> >> 
> >> >  	int flags = TARGET_SCF_ACK_KREF;
> >> >  
> >> >  	if (bidi)
> >> > @@ -476,6 +480,15 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t
> >> > *vha, struct qla_tgt_cmd *cmd,
> >> >  		pr_err("Unable to locate active struct se_session\n");
> >> >  		return -EINVAL;
> >> >  	}
> >> > +
> >> > +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> >> > +	se_tpg = se_sess->se_tpg;
> >> > +	tpg = container_of(se_tpg,struct tcm_qla2xxx_tpg, se_tpg);
> >> > + 	if (unlikely(tpg->tpg_attrib.jam_host)) {
> >> > + 		/* return, and dont run target_submit_cmd,discarding command */
> >> > +                return 0;
> >> > +	}
> >> > +#endif
> >> 
> >> Whitespace instead of TABs here too.
> >> 
> >> >  
> >> >  	cmd->vha->tgt_counters.qla_core_sbt_cmd++;
> >> >  	return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0],
> >> > @@ -844,6 +857,9 @@ DEF_QLA_TPG_ATTRIB(cache_dynamic_acls);
> >> >  DEF_QLA_TPG_ATTRIB(demo_mode_write_protect);
> >> >  DEF_QLA_TPG_ATTRIB(prod_mode_write_protect);
> >> >  DEF_QLA_TPG_ATTRIB(demo_mode_login_only);
> >> > +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> >> > +DEF_QLA_TPG_ATTRIB(jam_host);
> >> > +#endif
> >> >  
> >> >  static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
> >> >  	&tcm_qla2xxx_tpg_attrib_attr_generate_node_acls,
> >> > @@ -851,6 +867,9 @@ static struct configfs_attribute
> >> > *tcm_qla2xxx_tpg_attrib_attrs[] = {
> >> >  	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_write_protect,
> >> >  	&tcm_qla2xxx_tpg_attrib_attr_prod_mode_write_protect,
> >> >  	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_login_only,
> >> > +#ifdef CONFIG_TCM_QLA2XXX_DEBUG
> >> > +        &tcm_qla2xxx_tpg_attrib_attr_jam_host,
> >> > +#endif
> >> >  	NULL,
> >> >  };
> >> 
> >> Whitespace instead of TABs here too.
> >> 
> >> 
> >> --
> >> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> >> the body of a message to majordomo@vger.kernel.org
> >> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >> --
> >> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> >> the body of a message to majordomo@vger.kernel.org
> >> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >> 
> >
> >Hello Himanshu, Quinn
> >
> >Is this patch good now to be taken.
> >
> >Thanks
> >Laurence
> >
> 
> Looks Good.
> 
> Acked-by: Himanshu Madhani <himanshu.madhani@qlogic.com>
> 
> >
> N�����r��y���b�X��ǧv�^�)޺{.n�+����{���"�{ay�ʇڙ�,j��f���h���z��w������j:+v���w�j�m��������zZ+��ݢj"��
Hi Nicholas,

Can we pull this one in for submission now that its been acked'd by Himanshu.
Thanks
Laurence
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH]  tcm_qla2xxx Add SCSI command jammer/discard capability to the tcm_qla2xxx module
  2016-05-25 20:12                           ` Laurence Oberman
@ 2016-05-26  3:07                             ` Nicholas A. Bellinger
  0 siblings, 0 replies; 16+ messages in thread
From: Nicholas A. Bellinger @ 2016-05-26  3:07 UTC (permalink / raw)
  To: Laurence Oberman
  Cc: Himanshu Madhani, Bart Van Assche, linux-scsi, target-devel, Quinn Tran

On Wed, 2016-05-25 at 16:12 -0400, Laurence Oberman wrote:
> 

<SNIP>

> Hi Nicholas,
> 
> Can we pull this one in for submission now that its been acked'd by Himanshu.
> Thanks
> Laurence

This patch has been queued in target-pending/for-next for the last
weeks, and will be included in the v4.7-rc1 PULL request.

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

end of thread, other threads:[~2016-05-26  3:07 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1094927874.25583811.1459257571936.JavaMail.zimbra@redhat.com>
2016-03-29 14:42 ` tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision3 Laurence Oberman
2016-03-30  5:05   ` Bart Van Assche
2016-03-31  5:34     ` Nicholas A. Bellinger
2016-04-01  0:20       ` Himanshu Madhani
2016-04-01  0:55         ` Laurence Oberman
2016-04-01 18:15         ` Laurence Oberman
2016-04-02 16:04           ` tcm_qla2xxx Add SCSI command jammer/discard capabilty to the tcm_qla2xxx module - revision4 Laurence Oberman
2016-04-02 17:10             ` Laurence Oberman
2016-04-02 23:39               ` Nicholas A. Bellinger
2016-04-03 13:57                 ` [PATCH] tcm_qla2xxx Add SCSI command jammer/discard capability to the tcm_qla2xxx module Laurence Oberman
2016-04-04 20:54                   ` Nicholas A. Bellinger
2016-04-04 22:50                     ` Laurence Oberman
2016-05-09 14:56                       ` Laurence Oberman
2016-05-09 17:08                         ` Himanshu Madhani
2016-05-25 20:12                           ` Laurence Oberman
2016-05-26  3:07                             ` Nicholas A. Bellinger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.