Re: [PATCH] tcm_qla2xxx Add SCSI command jammer/discard capability to the tcm_qla2xxx module

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




----- Original Message -----
> From: "Himanshu Madhani" <himanshu.madhani@xxxxxxxxxx>
> To: "Laurence Oberman" <loberman@xxxxxxxxxx>, "Nicholas A. Bellinger" <nab@xxxxxxxxxxxxxxx>
> Cc: "Bart Van Assche" <bart.vanassche@xxxxxxxxxxx>, "linux-scsi" <linux-scsi@xxxxxxxxxxxxxxx>, "target-devel"
> <target-devel@xxxxxxxxxxxxxxx>, "Quinn Tran" <quinn.tran@xxxxxxxxxx>
> 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@xxxxxxxxxx> wrote:
> 
> 
> 
> >
> >
> >----- Original Message -----
> >> From: "Laurence Oberman" <loberman@xxxxxxxxxx>
> >> To: "Nicholas A. Bellinger" <nab@xxxxxxxxxxxxxxx>
> >> Cc: "Himanshu Madhani" <himanshu.madhani@xxxxxxxxxx>, "Bart Van Assche"
> >> <bart.vanassche@xxxxxxxxxxx>, "linux-scsi"
> >> <linux-scsi@xxxxxxxxxxxxxxx>, "target-devel"
> >> <target-devel@xxxxxxxxxxxxxxx>, "Quinn Tran" <quinn.tran@xxxxxxxxxx>
> >> 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@xxxxxxxxxx>
> >> Signed-off-by: Laurence Oberman <loberman@xxxxxxxxxx>
> >> ---
> >>  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@xxxxxxxxxxxxxxx>
> >> To: "Laurence Oberman" <loberman@xxxxxxxxxx>
> >> Cc: "Himanshu Madhani" <himanshu.madhani@xxxxxxxxxx>, "Bart Van Assche"
> >> <bart.vanassche@xxxxxxxxxxx>, "linux-scsi" <linux-scsi@xxxxxxxxxxxxxxx>,
> >> "target-devel" <target-devel@xxxxxxxxxxxxxxx>, "Quinn Tran"
> >> <quinn.tran@xxxxxxxxxx>
> >> 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@xxxxxxxxxx>
> >> > Signed-off-by: Laurence Oberman <loberman@xxxxxxxxxx>
> >> > ---
> >> >  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@xxxxxxxxxxxxxxx
> >> 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@xxxxxxxxxxxxxxx
> >> 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@xxxxxxxxxx>
> 
> >
> 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@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux