]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
target/iscsi: Remove second argument of __iscsit_free_cmd()
authorBart Van Assche <bart.vanassche@sandisk.com>
Tue, 23 May 2017 23:48:43 +0000 (16:48 -0700)
committerNicholas Bellinger <nab@linux-iscsi.org>
Fri, 7 Jul 2017 06:11:26 +0000 (23:11 -0700)
Initialize .data_direction to DMA_NONE in iscsit_allocate_cmd()
such that the second argument of __iscsit_free_cmd() can be left
out. Note: this patch causes the first part of __iscsit_free_cmd()
no longer to be skipped for TMFs. That's fine since no data
segments are associated with TMFs.

Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Andy Grover <agrover@redhat.com>
Cc: David Disseldorp <ddiss@suse.de>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/iscsi/iscsi_target.c
drivers/target/iscsi/iscsi_target_util.c
drivers/target/iscsi/iscsi_target_util.h

index 3fdca2cdd8da954b5a9c9d906c8b2d2b5e14f040..735d4ff2d0cec1d6f794761354c106c452aa12ca 100644 (file)
@@ -488,15 +488,13 @@ EXPORT_SYMBOL(iscsit_queue_rsp);
 
 void iscsit_aborted_task(struct iscsi_conn *conn, struct iscsi_cmd *cmd)
 {
-       bool scsi_cmd = (cmd->iscsi_opcode == ISCSI_OP_SCSI_CMD);
-
        spin_lock_bh(&conn->cmd_lock);
        if (!list_empty(&cmd->i_conn_node) &&
            !(cmd->se_cmd.transport_state & CMD_T_FABRIC_STOP))
                list_del_init(&cmd->i_conn_node);
        spin_unlock_bh(&conn->cmd_lock);
 
-       __iscsit_free_cmd(cmd, scsi_cmd, true);
+       __iscsit_free_cmd(cmd, true);
 }
 EXPORT_SYMBOL(iscsit_aborted_task);
 
index 7d3e2fcc26a0da82629102693a99750622afed95..41b9e7cc08b86fd7c258a872499e14e3f0948394 100644 (file)
@@ -167,6 +167,7 @@ struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *conn, int state)
 
        cmd->se_cmd.map_tag = tag;
        cmd->conn = conn;
+       cmd->data_direction = DMA_NONE;
        INIT_LIST_HEAD(&cmd->i_conn_node);
        INIT_LIST_HEAD(&cmd->datain_list);
        INIT_LIST_HEAD(&cmd->cmd_r2t_list);
@@ -711,19 +712,16 @@ void iscsit_release_cmd(struct iscsi_cmd *cmd)
 }
 EXPORT_SYMBOL(iscsit_release_cmd);
 
-void __iscsit_free_cmd(struct iscsi_cmd *cmd, bool scsi_cmd,
-                      bool check_queues)
+void __iscsit_free_cmd(struct iscsi_cmd *cmd, bool check_queues)
 {
        struct iscsi_conn *conn = cmd->conn;
 
-       if (scsi_cmd) {
-               if (cmd->data_direction == DMA_TO_DEVICE) {
-                       iscsit_stop_dataout_timer(cmd);
-                       iscsit_free_r2ts_from_list(cmd);
-               }
-               if (cmd->data_direction == DMA_FROM_DEVICE)
-                       iscsit_free_all_datain_reqs(cmd);
+       if (cmd->data_direction == DMA_TO_DEVICE) {
+               iscsit_stop_dataout_timer(cmd);
+               iscsit_free_r2ts_from_list(cmd);
        }
+       if (cmd->data_direction == DMA_FROM_DEVICE)
+               iscsit_free_all_datain_reqs(cmd);
 
        if (conn && check_queues) {
                iscsit_remove_cmd_from_immediate_queue(cmd, conn);
@@ -738,23 +736,22 @@ void iscsit_free_cmd(struct iscsi_cmd *cmd, bool shutdown)
 {
        struct se_cmd *se_cmd = NULL;
        int rc;
-       bool op_scsi = false;
+
        /*
         * Determine if a struct se_cmd is associated with
         * this struct iscsi_cmd.
         */
        switch (cmd->iscsi_opcode) {
        case ISCSI_OP_SCSI_CMD:
-               op_scsi = true;
                /*
                 * Fallthrough
                 */
        case ISCSI_OP_SCSI_TMFUNC:
                se_cmd = &cmd->se_cmd;
-               __iscsit_free_cmd(cmd, op_scsi, shutdown);
+               __iscsit_free_cmd(cmd, shutdown);
                rc = transport_generic_free_cmd(se_cmd, shutdown);
                if (!rc && shutdown && se_cmd->se_sess) {
-                       __iscsit_free_cmd(cmd, op_scsi, shutdown);
+                       __iscsit_free_cmd(cmd, shutdown);
                        target_put_sess_cmd(se_cmd);
                }
                break;
@@ -766,18 +763,18 @@ void iscsit_free_cmd(struct iscsi_cmd *cmd, bool shutdown)
                 */
                if (cmd->se_cmd.se_tfo != NULL) {
                        se_cmd = &cmd->se_cmd;
-                       __iscsit_free_cmd(cmd, true, shutdown);
+                       __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, true, shutdown);
+                               __iscsit_free_cmd(cmd, shutdown);
                                target_put_sess_cmd(se_cmd);
                        }
                        break;
                }
                /* Fall-through */
        default:
-               __iscsit_free_cmd(cmd, false, shutdown);
+               __iscsit_free_cmd(cmd, shutdown);
                iscsit_release_cmd(cmd);
                break;
        }
index 9e4197af8708e1056a08f4c01d423581a075bef1..425160565d0c310a549c6f50524815247d83b786 100644 (file)
@@ -37,7 +37,7 @@ extern void iscsit_remove_cmd_from_tx_queues(struct iscsi_cmd *, struct iscsi_co
 extern bool iscsit_conn_all_queues_empty(struct iscsi_conn *);
 extern void iscsit_free_queue_reqs_for_conn(struct iscsi_conn *);
 extern void iscsit_release_cmd(struct iscsi_cmd *);
-extern void __iscsit_free_cmd(struct iscsi_cmd *, bool, bool);
+extern void __iscsit_free_cmd(struct iscsi_cmd *, bool);
 extern void iscsit_free_cmd(struct iscsi_cmd *, bool);
 extern int iscsit_check_session_usage_count(struct iscsi_session *);
 extern void iscsit_dec_session_usage_count(struct iscsi_session *);