linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH ] tcm_qla2xxx - Enhancements to the tcm_debug jammer code to jam only data movement commands
       [not found] <1631152442.9077031.1482442562064.JavaMail.zimbra@redhat.com>
@ 2016-12-22 21:46 ` Laurence Oberman
  2016-12-22 21:54   ` Bart Van Assche
  0 siblings, 1 reply; 3+ messages in thread
From: Laurence Oberman @ 2016-12-22 21:46 UTC (permalink / raw)
  To: Himanshu Madhani, nab; +Cc: linux-scsi@vger.kernel.org

Hello Himanshu and Nicholas,

Was going over my patches and remembered this one got lost.

Himanshu, you acked this already at some point.
Nicholas can we get this on next submission maybe.

Thanks
Laurence

Added the possibility of blocking only specific SCSI data movement commands
but allowing TUR'S to pass.
This has been helpful for debugging many driver/array interoperabilty
issues.

Folded documentation and code into single patch now

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

 Documentation/scsi/tcm_qla2xxx.txt | 16 ++++++++++++++++
 drivers/scsi/qla2xxx/tcm_qla2xxx.c |  7 +++++++
 drivers/scsi/qla2xxx/tcm_qla2xxx.h |  1 +
 3 files changed, 24 insertions(+)

diff --git a/Documentation/scsi/tcm_qla2xxx.txt b/Documentation/scsi/tcm_qla2xxx.txt
index c3a670a..8d26d29 100644
--- a/Documentation/scsi/tcm_qla2xxx.txt
+++ b/Documentation/scsi/tcm_qla2xxx.txt
@@ -20,3 +20,19 @@ echo 1 > /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib
 
 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
+
+New feature added with a new attribute called jam_data.
+
+Setting a boolean of 1 for jam_data will allow the allow the dropping of data-only SCSI 
+ commands but allow TUR commands to pass.
+Note that for this to work jam_host needs to be set to 0
+
+This has proven very useful for testing Low Level driver response.
+
+Enable host 4 for only data commands to be jammed
+echo 0 > /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_host
+echo 1 > /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_data
+
+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
+echo 0 > /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:27:8f:ae/tpgt_1/attrib/jam_data

diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
index 6643f6f..1cb3f02 100644
--- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
+++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
@@ -473,6 +473,10 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha, struct qla_tgt_cmd *cmd,
 		/* return, and dont run target_submit_cmd,discarding command */
 		return 0;
 	}
+	if (unlikely(tpg->tpg_attrib.jam_data && (cdb[0]==0x08 || cdb[0]==0x0A || cdb[0]==0x28 || cdb[0]==0x2A))) {
+                /* return, and dont run target_submit_cmd,discarding command if not TUR*/
+                return 0;
+        }
 #endif
 
 	cmd->vha->tgt_counters.qla_core_sbt_cmd++;
@@ -827,6 +831,7 @@ 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);
+DEF_QLA_TPG_ATTRIB(jam_data);
 #endif
 
 static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
@@ -837,6 +842,7 @@ static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
 	&tcm_qla2xxx_tpg_attrib_attr_demo_mode_login_only,
 #ifdef CONFIG_TCM_QLA2XXX_DEBUG
 	&tcm_qla2xxx_tpg_attrib_attr_jam_host,
+	&tcm_qla2xxx_tpg_attrib_attr_jam_data,
 #endif
 	NULL,
 };
@@ -1011,6 +1017,7 @@ static struct se_portal_group *tcm_qla2xxx_make_tpg(
 	tpg->tpg_attrib.cache_dynamic_acls = 1;
 	tpg->tpg_attrib.demo_mode_login_only = 1;
 	tpg->tpg_attrib.jam_host = 0;
+	tpg->tpg_attrib.jam_data = 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 37e026a..789bdeb 100644
--- a/drivers/scsi/qla2xxx/tcm_qla2xxx.h
+++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
@@ -35,6 +35,7 @@ struct tcm_qla2xxx_tpg_attrib {
 	int demo_mode_login_only;
 	int fabric_prot_type;
 	int jam_host;
+	int jam_data;
 };
 
 struct tcm_qla2xxx_tpg {
-- 
2.5.5
--

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

* Re: [PATCH ] tcm_qla2xxx - Enhancements to the tcm_debug jammer code to jam only data movement commands
  2016-12-22 21:46 ` [PATCH ] tcm_qla2xxx - Enhancements to the tcm_debug jammer code to jam only data movement commands Laurence Oberman
@ 2016-12-22 21:54   ` Bart Van Assche
  2016-12-22 21:59     ` Laurence Oberman
  0 siblings, 1 reply; 3+ messages in thread
From: Bart Van Assche @ 2016-12-22 21:54 UTC (permalink / raw)
  To: himanshu.madhani@cavium.com, loberman@redhat.com,
	nab@daterainc.com
  Cc: linux-scsi@vger.kernel.org

On Thu, 2016-12-22 at 16:46 -0500, Laurence Oberman wrote:
> Added the possibility of blocking only specific SCSI data movement commands
> but allowing TUR'S to pass.
> This has been helpful for debugging many driver/array interoperabilty
> issues.

Hello Laurence,

Your work is appreciated and also that you are posting this patch for inclusion
in the kernel. However, since this is functionality of which I think that it is
useful for all target drivers, shouldn't this kind of functionality be added to
the target core instead of one specific target driver?

Bart.

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

* Re: [PATCH ] tcm_qla2xxx - Enhancements to the tcm_debug jammer code to jam only data movement commands
  2016-12-22 21:54   ` Bart Van Assche
@ 2016-12-22 21:59     ` Laurence Oberman
  0 siblings, 0 replies; 3+ messages in thread
From: Laurence Oberman @ 2016-12-22 21:59 UTC (permalink / raw)
  To: Bart Van Assche; +Cc: himanshu madhani, nab, linux-scsi



----- Original Message -----
> From: "Bart Van Assche" <Bart.VanAssche@sandisk.com>
> To: "himanshu madhani" <himanshu.madhani@cavium.com>, loberman@redhat.com, nab@daterainc.com
> Cc: linux-scsi@vger.kernel.org
> Sent: Thursday, December 22, 2016 4:54:30 PM
> Subject: Re: [PATCH ] tcm_qla2xxx - Enhancements to the tcm_debug jammer code to jam only data movement commands
> 
> On Thu, 2016-12-22 at 16:46 -0500, Laurence Oberman wrote:
> > Added the possibility of blocking only specific SCSI data movement commands
> > but allowing TUR'S to pass.
> > This has been helpful for debugging many driver/array interoperabilty
> > issues.
> 
> Hello Laurence,
> 
> Your work is appreciated and also that you are posting this patch for
> inclusion
> in the kernel. However, since this is functionality of which I think that it
> is
> useful for all target drivers, shouldn't this kind of functionality be added
> to
> the target core instead of one specific target driver?
> 
> Bart.

Hello Bart

Thank you for this.

Indeed, That's on my plate for next year to try rework this into the target core.
Its used a lot here at Red Hat for testing the F/C drivers and multipath via the LIO target server.
The first version of this is already in that allows jamming of all commands.
I wanted to share the enhancement which is very useful and has been working well here but indeed if we have this in the core its better.

I may have some questions for you as I work on that next year.
Many Thanks Bart for all your help this year.

Regards
Laurence

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

end of thread, other threads:[~2016-12-22 21:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1631152442.9077031.1482442562064.JavaMail.zimbra@redhat.com>
2016-12-22 21:46 ` [PATCH ] tcm_qla2xxx - Enhancements to the tcm_debug jammer code to jam only data movement commands Laurence Oberman
2016-12-22 21:54   ` Bart Van Assche
2016-12-22 21:59     ` Laurence Oberman

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