Message ID | 2049960802.3555391.1472592259703.JavaMail.zimbra@redhat.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
----- Original Message ----- > From: "Laurence Oberman" <loberman@redhat.com> > To: "himanshu madhani" <himanshu.madhani@qlogic.com>, nab@linux-iscsi.org, "Linux SCSI Mailinglist" > <linux-scsi@vger.kernel.org> > Sent: Tuesday, August 30, 2016 5:24:19 PM > Subject: [PATCH] tcm_qla2xxx Add SCSI command jammer/discard capability to the tcm_qla2xxx module - enhancements > > Hello Himanshu and Nicholas, > > Enhancements to the tcm_debug code. > 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. > > Two Patches, The first is to the driver code, second is updating the > documentation. > > Tested by: Laurence Oberman <loberman@redhat.com> > Signed-off-by: Laurence Oberman <loberman@redhat.com> > > drivers/scsi/qla2xxx/tcm_qla2xxx.c | 7 +++++++ > drivers/scsi/qla2xxx/tcm_qla2xxx.h | 1 + > 2 files changed, 8 insertions(+) > > diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c > b/drivers/scsi/qla2xxx/tcm_qla2xxx.c > index 6643f6f..d620a77 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_host && 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 > > > > Documentation/scsi/tcm_qla2xxx.txt | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/Documentation/scsi/tcm_qla2xxx.txt > b/Documentation/scsi/tcm_qla2xxx.txt > index c3a670a..4a8706c 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 as well as setting the boolean of 1 for > jam_host will > + allow the dropping of data-only SCSI commands but allow TUR commands to > pass. > + > +This has proven very useful for testing Low Level driver response. > + > +Enable host 4 for only data commands to be jammed > +echo 1 > > /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 > + > -- > 2.5.5 > > -- > 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 > Oops Replying to my own message I need to send a V2 of this patch, apologies, just realized match on first check of jam_host so 2nd check wont be met. When testing only had 2nd check in code and only just saw it. Back shortly -- 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
diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c index 6643f6f..d620a77 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_host && 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 Documentation/scsi/tcm_qla2xxx.txt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Documentation/scsi/tcm_qla2xxx.txt b/Documentation/scsi/tcm_qla2xxx.txt index c3a670a..4a8706c 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 as well as setting the boolean of 1 for jam_host will + allow the dropping of data-only SCSI commands but allow TUR commands to pass. + +This has proven very useful for testing Low Level driver response. + +Enable host 4 for only data commands to be jammed +echo 1 > /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 +
Hello Himanshu and Nicholas, Enhancements to the tcm_debug code. 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. Two Patches, The first is to the driver code, second is updating the documentation. Tested by: Laurence Oberman <loberman@redhat.com> Signed-off-by: Laurence Oberman <loberman@redhat.com> drivers/scsi/qla2xxx/tcm_qla2xxx.c | 7 +++++++ drivers/scsi/qla2xxx/tcm_qla2xxx.h | 1 + 2 files changed, 8 insertions(+)