diff options
author | Sagi Grimberg <sagig@mellanox.com> | 2015-01-26 05:49:05 -0500 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2015-02-04 13:55:33 -0500 |
commit | c1e34b64044318dde74a4cec24a91ff6415f1c48 (patch) | |
tree | dfe7ec5ff63a5abdb800bb90e6fee41b9dbacaad | |
parent | 631af550621071d56abe2edbb63d9afd4f4dafcf (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.c | 12 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_util.c | 9 | ||||
-rw-r--r-- | include/target/iscsi/iscsi_target_core.h | 13 |
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 | ||
883 | static 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 */ |