aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSagi Grimberg <sagig@mellanox.com>2015-01-26 05:49:05 -0500
committerNicholas Bellinger <nab@linux-iscsi.org>2015-02-04 13:55:33 -0500
commitc1e34b64044318dde74a4cec24a91ff6415f1c48 (patch)
treedfe7ec5ff63a5abdb800bb90e6fee41b9dbacaad
parent631af550621071d56abe2edbb63d9afd4f4dafcf (diff)
iscsi-target: Introduce session_get_next_ttt
Reduce code duplication. Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
-rw-r--r--drivers/target/iscsi/iscsi_target.c12
-rw-r--r--drivers/target/iscsi/iscsi_target_util.c9
-rw-r--r--include/target/iscsi/iscsi_target_core.h13
3 files changed, 17 insertions, 17 deletions
diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
index dd646c43d16d..5b25faa43c64 100644
--- a/drivers/target/iscsi/iscsi_target.c
+++ b/drivers/target/iscsi/iscsi_target.c
@@ -968,11 +968,7 @@ int iscsit_setup_scsi_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
968 968
969 conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt; 969 conn->sess->init_task_tag = cmd->init_task_tag = hdr->itt;
970 if (hdr->flags & ISCSI_FLAG_CMD_READ) { 970 if (hdr->flags & ISCSI_FLAG_CMD_READ) {
971 spin_lock_bh(&conn->sess->ttt_lock); 971 cmd->targ_xfer_tag = session_get_next_ttt(conn->sess);
972 cmd->targ_xfer_tag = conn->sess->targ_xfer_tag++;
973 if (cmd->targ_xfer_tag == 0xFFFFFFFF)
974 cmd->targ_xfer_tag = conn->sess->targ_xfer_tag++;
975 spin_unlock_bh(&conn->sess->ttt_lock);
976 } else if (hdr->flags & ISCSI_FLAG_CMD_WRITE) 972 } else if (hdr->flags & ISCSI_FLAG_CMD_WRITE)
977 cmd->targ_xfer_tag = 0xFFFFFFFF; 973 cmd->targ_xfer_tag = 0xFFFFFFFF;
978 cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); 974 cmd->cmd_sn = be32_to_cpu(hdr->cmdsn);
@@ -3047,11 +3043,7 @@ static int iscsit_send_r2t(
3047 int_to_scsilun(cmd->se_cmd.orig_fe_lun, 3043 int_to_scsilun(cmd->se_cmd.orig_fe_lun,
3048 (struct scsi_lun *)&hdr->lun); 3044 (struct scsi_lun *)&hdr->lun);
3049 hdr->itt = cmd->init_task_tag; 3045 hdr->itt = cmd->init_task_tag;
3050 spin_lock_bh(&conn->sess->ttt_lock); 3046 r2t->targ_xfer_tag = session_get_next_ttt(conn->sess);
3051 r2t->targ_xfer_tag = conn->sess->targ_xfer_tag++;
3052 if (r2t->targ_xfer_tag == 0xFFFFFFFF)
3053 r2t->targ_xfer_tag = conn->sess->targ_xfer_tag++;
3054 spin_unlock_bh(&conn->sess->ttt_lock);
3055 hdr->ttt = cpu_to_be32(r2t->targ_xfer_tag); 3047 hdr->ttt = cpu_to_be32(r2t->targ_xfer_tag);
3056 hdr->statsn = cpu_to_be32(conn->stat_sn); 3048 hdr->statsn = cpu_to_be32(conn->stat_sn);
3057 hdr->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn); 3049 hdr->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn);
diff --git a/drivers/target/iscsi/iscsi_target_util.c b/drivers/target/iscsi/iscsi_target_util.c
index 70f57c192415..c211d3f2726c 100644
--- a/drivers/target/iscsi/iscsi_target_util.c
+++ b/drivers/target/iscsi/iscsi_target_util.c
@@ -939,13 +939,8 @@ static int iscsit_add_nopin(struct iscsi_conn *conn, int want_response)
939 state = (want_response) ? ISTATE_SEND_NOPIN_WANT_RESPONSE : 939 state = (want_response) ? ISTATE_SEND_NOPIN_WANT_RESPONSE :
940 ISTATE_SEND_NOPIN_NO_RESPONSE; 940 ISTATE_SEND_NOPIN_NO_RESPONSE;
941 cmd->init_task_tag = RESERVED_ITT; 941 cmd->init_task_tag = RESERVED_ITT;
942 spin_lock_bh(&conn->sess->ttt_lock); 942 cmd->targ_xfer_tag = (want_response) ?
943 cmd->targ_xfer_tag = (want_response) ? conn->sess->targ_xfer_tag++ : 943 session_get_next_ttt(conn->sess) : 0xFFFFFFFF;
944 0xFFFFFFFF;
945 if (want_response && (cmd->targ_xfer_tag == 0xFFFFFFFF))
946 cmd->targ_xfer_tag = conn->sess->targ_xfer_tag++;
947 spin_unlock_bh(&conn->sess->ttt_lock);
948
949 spin_lock_bh(&conn->cmd_lock); 944 spin_lock_bh(&conn->cmd_lock);
950 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list); 945 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list);
951 spin_unlock_bh(&conn->cmd_lock); 946 spin_unlock_bh(&conn->cmd_lock);
diff --git a/include/target/iscsi/iscsi_target_core.h b/include/target/iscsi/iscsi_target_core.h
index 09a522bae222..5f41a17bdafd 100644
--- a/include/target/iscsi/iscsi_target_core.h
+++ b/include/target/iscsi/iscsi_target_core.h
@@ -880,4 +880,17 @@ struct iscsit_global {
880 struct iscsi_portal_group *discovery_tpg; 880 struct iscsi_portal_group *discovery_tpg;
881}; 881};
882 882
883static inline u32 session_get_next_ttt(struct iscsi_session *session)
884{
885 u32 ttt;
886
887 spin_lock_bh(&session->ttt_lock);
888 ttt = session->targ_xfer_tag++;
889 if (ttt == 0xFFFFFFFF)
890 ttt = session->targ_xfer_tag++;
891 spin_unlock_bh(&session->ttt_lock);
892
893 return ttt;
894}
895
883#endif /* ISCSI_TARGET_CORE_H */ 896#endif /* ISCSI_TARGET_CORE_H */