scsi: target: core: Move core_alua_check_nonop_delay() call
authorMike Christie <michael.christie@oracle.com>
Thu, 28 Sep 2023 02:09:02 +0000 (21:09 -0500)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 13 Oct 2023 19:53:57 +0000 (15:53 -0400)
Move core_alua_check_nonop_delay() to transport_handle_cdb_direct() so the
iSCSI target driver doesn't have to call as many core functions
directly. We will eventually merge transport_handle_cdb_direct and
target_submit so iSCSI and the other drivers call a common function.

It will also be helpful as preparation for future changes which allow the
iSCSI target to defer command submission to the LIO submission workqueue,
because we will have a common submission function for that which will be
based on transport_handle_cdb_direct()/target_submit().

Signed-off-by: Mike Christie <michael.christie@oracle.com>
Link: https://lore.kernel.org/r/20230928020907.5730-3-michael.christie@oracle.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/target/iscsi/iscsi_target.c
drivers/target/target_core_alua.c
drivers/target/target_core_transport.c
include/target/target_core_fabric.h

index b516c2893420bc142412061aa5db056d6732b685..1d25e64b068a02867b1320d1c29577cb8d6c81e9 100644 (file)
@@ -1234,12 +1234,6 @@ attach_cmd:
        spin_lock_bh(&conn->cmd_lock);
        list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list);
        spin_unlock_bh(&conn->cmd_lock);
-       /*
-        * Check if we need to delay processing because of ALUA
-        * Active/NonOptimized primary access state..
-        */
-       core_alua_check_nonop_delay(&cmd->se_cmd);
-
        return 0;
 }
 EXPORT_SYMBOL(iscsit_setup_scsi_cmd);
index 3372856319f72ffed8262b19a264ec05b118e5b4..01751faad38663ef6bd95e118c07df52d40b4fa0 100644 (file)
@@ -850,7 +850,6 @@ int core_alua_check_nonop_delay(
        msleep_interruptible(cmd->alua_nonop_delay);
        return 0;
 }
-EXPORT_SYMBOL(core_alua_check_nonop_delay);
 
 static int core_alua_write_tpg_metadata(
        const char *path,
index 687adc9e086ca942ba85dd591ab3b7bf76cc9192..a63f19bf47f82e79a21a813508736d04d989f669 100644 (file)
@@ -1586,6 +1586,12 @@ int transport_handle_cdb_direct(
 
        might_sleep();
 
+       /*
+        * Check if we need to delay processing because of ALUA
+        * Active/NonOptimized primary access state..
+        */
+       core_alua_check_nonop_delay(cmd);
+
        if (!cmd->se_lun) {
                dump_stack();
                pr_err("cmd->se_lun is NULL\n");
@@ -1817,12 +1823,6 @@ void target_submit(struct se_cmd *se_cmd)
 
        }
 
-       /*
-        * Check if we need to delay processing because of ALUA
-        * Active/NonOptimized primary access state..
-        */
-       core_alua_check_nonop_delay(se_cmd);
-
        transport_handle_cdb_direct(se_cmd);
 }
 EXPORT_SYMBOL_GPL(target_submit);
index dcd7d76d2f3010c7a0dba16a4fad5c871ae7f4d4..e5fcfb84552915a1ad78a32cd11b1731208145c2 100644 (file)
@@ -206,8 +206,6 @@ void        target_stop_session(struct se_session *se_sess);
 void   target_wait_for_sess_cmds(struct se_session *);
 void   target_show_cmd(const char *pfx, struct se_cmd *cmd);
 
-int    core_alua_check_nonop_delay(struct se_cmd *);
-
 int    core_tmr_alloc_req(struct se_cmd *, void *, u8, gfp_t);
 void   core_tmr_release_req(struct se_tmr_req *);
 int    transport_generic_handle_tmr(struct se_cmd *);