]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
scsi: target: Fold core_tmr_handle_tas_abort() into transport_cmd_finish_abort()
authorBart Van Assche <bart.vanassche@wdc.com>
Fri, 22 Jun 2018 21:52:56 +0000 (14:52 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Mon, 2 Jul 2018 20:44:31 +0000 (16:44 -0400)
For the two calls to transport_cmd_finish_abort() outside
core_tmr_handle_tas_abort() it is guaranteed that CMD_T_TAS is not set. Use
this property to fold core_tmr_handle_tas_abort() into
transport_cmd_finish_abort(). This patch does not change any functionality.

Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
Reviewed-by: Mike Christie <mchristi@redhat.com>
Cc: Hannes Reinecke <hare@suse.com>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/target/target_core_internal.h
drivers/target/target_core_tmr.c
drivers/target/target_core_transport.c

index dead30b1d32c977518684168ca45e93624db84f9..0c66355879301c0d7989ac9a8f18c51a5017147a 100644 (file)
@@ -138,7 +138,7 @@ int init_se_kmem_caches(void);
 void   release_se_kmem_caches(void);
 u32    scsi_get_new_index(scsi_index_t);
 void   transport_subsystem_check_init(void);
-int    transport_cmd_finish_abort(struct se_cmd *, int);
+int    transport_cmd_finish_abort(struct se_cmd *);
 unsigned char *transport_dump_cmd_direction(struct se_cmd *);
 void   transport_dump_dev_state(struct se_device *, char *, int *);
 void   transport_dump_dev_info(struct se_device *, struct se_lun *,
index 08af053e7990903474a3dd1b2fb33bd5fc6b0c5f..6d1179a7f043d20436913ad2cf6441b3e05f2a72 100644 (file)
@@ -75,16 +75,6 @@ void core_tmr_release_req(struct se_tmr_req *tmr)
        kfree(tmr);
 }
 
-static int core_tmr_handle_tas_abort(struct se_cmd *cmd, int tas)
-{
-       bool send_tas = cmd->transport_state & CMD_T_TAS;
-
-       if (send_tas)
-               transport_send_task_abort(cmd);
-
-       return transport_cmd_finish_abort(cmd, !send_tas);
-}
-
 static int target_check_cdb_and_preempt(struct list_head *list,
                struct se_cmd *cmd)
 {
@@ -183,7 +173,7 @@ void core_tmr_abort_task(
                cancel_work_sync(&se_cmd->work);
                transport_wait_for_tasks(se_cmd);
 
-               if (!transport_cmd_finish_abort(se_cmd, true))
+               if (!transport_cmd_finish_abort(se_cmd))
                        target_put_sess_cmd(se_cmd);
 
                printk("ABORT_TASK: Sending TMR_FUNCTION_COMPLETE for"
@@ -281,7 +271,7 @@ static void core_tmr_drain_tmr_list(
                cancel_work_sync(&cmd->work);
                transport_wait_for_tasks(cmd);
 
-               if (!transport_cmd_finish_abort(cmd, 1))
+               if (!transport_cmd_finish_abort(cmd))
                        target_put_sess_cmd(cmd);
        }
 }
@@ -370,7 +360,7 @@ static void core_tmr_drain_state_list(
                cancel_work_sync(&cmd->work);
                transport_wait_for_tasks(cmd);
 
-               if (!core_tmr_handle_tas_abort(cmd, tas))
+               if (!transport_cmd_finish_abort(cmd))
                        target_put_sess_cmd(cmd);
        }
 }
index 47318f64296d01b99e3e8cc555e87b14b2a97511..3f95ddea6b1c052f2281659264615ed66927116a 100644 (file)
@@ -688,23 +688,27 @@ static void transport_lun_remove_cmd(struct se_cmd *cmd)
                percpu_ref_put(&lun->lun_ref);
 }
 
-int transport_cmd_finish_abort(struct se_cmd *cmd, int remove)
+int transport_cmd_finish_abort(struct se_cmd *cmd)
 {
+       bool send_tas = cmd->transport_state & CMD_T_TAS;
        bool ack_kref = (cmd->se_cmd_flags & SCF_ACK_KREF);
        int ret = 0;
 
+       if (send_tas)
+               transport_send_task_abort(cmd);
+
        if (cmd->se_cmd_flags & SCF_SE_LUN_CMD)
                transport_lun_remove_cmd(cmd);
        /*
         * Allow the fabric driver to unmap any resources before
         * releasing the descriptor via TFO->release_cmd()
         */
-       if (remove)
+       if (!send_tas)
                cmd->se_tfo->aborted_task(cmd);
 
        if (transport_cmd_check_stop_to_fabric(cmd))
                return 1;
-       if (remove && ack_kref)
+       if (!send_tas && ack_kref)
                ret = target_put_sess_cmd(cmd);
 
        return ret;