]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/target/target_core_tmr.c
drm/amd/powerplay: refine pwm1_enable callback functions for Vega10.
[mirror_ubuntu-bionic-kernel.git] / drivers / target / target_core_tmr.c
index 4f229e711e1c1cfc0134abb71b617f9511a6e606..dce1e1b47316173329292f90276843d26d32407b 100644 (file)
@@ -175,10 +175,9 @@ void core_tmr_abort_task(
                printk("ABORT_TASK: Found referenced %s task_tag: %llu\n",
                        se_cmd->se_tfo->get_fabric_name(), ref_tag);
 
-               if (!__target_check_io_state(se_cmd, se_sess, 0)) {
-                       spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags);
-                       goto out;
-               }
+               if (!__target_check_io_state(se_cmd, se_sess, 0))
+                       continue;
+
                list_del_init(&se_cmd->se_cmd_list);
                spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags);
 
@@ -191,14 +190,15 @@ void core_tmr_abort_task(
                printk("ABORT_TASK: Sending TMR_FUNCTION_COMPLETE for"
                                " ref_tag: %llu\n", ref_tag);
                tmr->response = TMR_FUNCTION_COMPLETE;
+               atomic_long_inc(&dev->aborts_complete);
                return;
        }
        spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags);
 
-out:
        printk("ABORT_TASK: Sending TMR_TASK_DOES_NOT_EXIST for ref_tag: %lld\n",
                        tmr->ref_task_tag);
        tmr->response = TMR_TASK_DOES_NOT_EXIST;
+       atomic_long_inc(&dev->aborts_no_task);
 }
 
 static void core_tmr_drain_tmr_list(
@@ -217,13 +217,8 @@ static void core_tmr_drain_tmr_list(
         * LUN_RESET tmr..
         */
        spin_lock_irqsave(&dev->se_tmr_lock, flags);
+       list_del_init(&tmr->tmr_list);
        list_for_each_entry_safe(tmr_p, tmr_pp, &dev->dev_tmr_list, tmr_list) {
-               /*
-                * Allow the received TMR to return with FUNCTION_COMPLETE.
-                */
-               if (tmr_p == tmr)
-                       continue;
-
                cmd = tmr_p->task_cmd;
                if (!cmd) {
                        pr_err("Unable to locate struct se_cmd for TMR\n");