On Thu, 2017-03-30 at 10:12 -0700, Bart Van Assche wrote: > Since .se_tfo is only set if a command has been submitted to > the LIO core, check .se_tfo instead of .iscsi_opcode. Since > __iscsit_free_cmd() only affects SCSI commands but not TMFs, > calling that function for TMFs does not change behavior. This > patch does not change the behavior of iscsit_free_cmd(). > > Signed-off-by: Bart Van Assche <bart.vanassche@xxxxxxxxxxx> > --- > drivers/target/iscsi/iscsi_target_util.c | 40 ++++---------------------------- > 1 file changed, 5 insertions(+), 35 deletions(-) > Looks fine, but also needs to be rebased atop what's currently in the mainline queue for v4.11-rc. > diff --git a/drivers/target/iscsi/iscsi_target_util.c b/drivers/target/iscsi/iscsi_target_util.c > index 8b89251c644d..139746b3b189 100644 > --- a/drivers/target/iscsi/iscsi_target_util.c > +++ b/drivers/target/iscsi/iscsi_target_util.c > @@ -736,48 +736,18 @@ void __iscsit_free_cmd(struct iscsi_cmd *cmd, bool check_queues) > > void iscsit_free_cmd(struct iscsi_cmd *cmd, bool shutdown) > { > - struct se_cmd *se_cmd = NULL; > + struct se_cmd *se_cmd = cmd->se_cmd.se_tfo ? &cmd->se_cmd : NULL; > int rc; > - /* > - * Determine if a struct se_cmd is associated with > - * this struct iscsi_cmd. > - */ > - switch (cmd->iscsi_opcode) { > - case ISCSI_OP_SCSI_CMD: > - se_cmd = &cmd->se_cmd; > - __iscsit_free_cmd(cmd, shutdown); > - /* > - * Fallthrough > - */ > - case ISCSI_OP_SCSI_TMFUNC: > + > + __iscsit_free_cmd(cmd, shutdown); > + if (se_cmd) { > rc = transport_generic_free_cmd(&cmd->se_cmd, shutdown); > if (!rc && shutdown && se_cmd && se_cmd->se_sess) { > __iscsit_free_cmd(cmd, shutdown); > target_put_sess_cmd(se_cmd); > } > - break; > - case ISCSI_OP_REJECT: > - /* > - * Handle special case for REJECT when iscsi_add_reject*() has > - * overwritten the original iscsi_opcode assignment, and the > - * associated cmd->se_cmd needs to be released. > - */ > - if (cmd->se_cmd.se_tfo != NULL) { > - se_cmd = &cmd->se_cmd; > - __iscsit_free_cmd(cmd, shutdown); > - > - rc = transport_generic_free_cmd(&cmd->se_cmd, shutdown); > - if (!rc && shutdown && se_cmd->se_sess) { > - __iscsit_free_cmd(cmd, shutdown); > - target_put_sess_cmd(se_cmd); > - } > - break; > - } > - /* Fall-through */ > - default: > - __iscsit_free_cmd(cmd, shutdown); > + } else { > iscsit_release_cmd(cmd); > - break; > } > } > EXPORT_SYMBOL(iscsit_free_cmd); -- To unsubscribe from this list: send the line "unsubscribe target-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html