diff options
Diffstat (limited to 'drivers/target/iscsi/iscsi_target_util.c')
-rw-r--r-- | drivers/target/iscsi/iscsi_target_util.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/target/iscsi/iscsi_target_util.c b/drivers/target/iscsi/iscsi_target_util.c index f00137f377b..02348f727bd 100644 --- a/drivers/target/iscsi/iscsi_target_util.c +++ b/drivers/target/iscsi/iscsi_target_util.c | |||
@@ -289,7 +289,8 @@ struct iscsi_cmd *iscsit_allocate_se_cmd_for_tmr( | |||
289 | } | 289 | } |
290 | 290 | ||
291 | se_cmd->se_tmr_req = core_tmr_alloc_req(se_cmd, | 291 | se_cmd->se_tmr_req = core_tmr_alloc_req(se_cmd, |
292 | (void *)cmd->tmr_req, tcm_function); | 292 | (void *)cmd->tmr_req, tcm_function, |
293 | GFP_KERNEL); | ||
293 | if (!se_cmd->se_tmr_req) | 294 | if (!se_cmd->se_tmr_req) |
294 | goto out; | 295 | goto out; |
295 | 296 | ||
@@ -839,6 +840,23 @@ void iscsit_release_cmd(struct iscsi_cmd *cmd) | |||
839 | kmem_cache_free(lio_cmd_cache, cmd); | 840 | kmem_cache_free(lio_cmd_cache, cmd); |
840 | } | 841 | } |
841 | 842 | ||
843 | void iscsit_free_cmd(struct iscsi_cmd *cmd) | ||
844 | { | ||
845 | /* | ||
846 | * Determine if a struct se_cmd is assoicated with | ||
847 | * this struct iscsi_cmd. | ||
848 | */ | ||
849 | switch (cmd->iscsi_opcode) { | ||
850 | case ISCSI_OP_SCSI_CMD: | ||
851 | case ISCSI_OP_SCSI_TMFUNC: | ||
852 | transport_generic_free_cmd(&cmd->se_cmd, 1); | ||
853 | break; | ||
854 | default: | ||
855 | iscsit_release_cmd(cmd); | ||
856 | break; | ||
857 | } | ||
858 | } | ||
859 | |||
842 | int iscsit_check_session_usage_count(struct iscsi_session *sess) | 860 | int iscsit_check_session_usage_count(struct iscsi_session *sess) |
843 | { | 861 | { |
844 | spin_lock_bh(&sess->session_usage_lock); | 862 | spin_lock_bh(&sess->session_usage_lock); |