iscsi: Simplify duplicated target pointers in iscsi_op_login_phase_none

conn->target is initialized to NULL in iscsi_op_login_phase_none
and then configured in iscsi_op_login_session_normal. Hence
subsequent references to target node can be done by conn->target and
related local variables can be removed.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I68b94cb8e136522ef1e0ed74c0035ec2b666bb9e
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/463700
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Shuhei Matsumoto 2019-07-31 08:36:12 +09:00 committed by Jim Harris
parent 8f71ab3a2b
commit 1738ec7a9e
2 changed files with 26 additions and 27 deletions

View File

@ -1459,9 +1459,9 @@ iscsi_op_login_session_normal(struct spdk_iscsi_conn *conn,
struct spdk_iscsi_pdu *rsp_pdu, struct spdk_iscsi_pdu *rsp_pdu,
char *initiator_port_name, char *initiator_port_name,
struct iscsi_param *params, struct iscsi_param *params,
struct spdk_iscsi_tgt_node **target,
int cid) int cid)
{ {
struct spdk_iscsi_tgt_node *target = NULL;
const char *target_name; const char *target_name;
const char *target_short_name; const char *target_short_name;
struct iscsi_bhs_login_rsp *rsph; struct iscsi_bhs_login_rsp *rsph;
@ -1495,16 +1495,16 @@ iscsi_op_login_session_normal(struct spdk_iscsi_conn *conn,
} }
pthread_mutex_lock(&g_spdk_iscsi.mutex); pthread_mutex_lock(&g_spdk_iscsi.mutex);
rc = iscsi_op_login_check_target(conn, rsp_pdu, target_name, target); rc = iscsi_op_login_check_target(conn, rsp_pdu, target_name, &target);
pthread_mutex_unlock(&g_spdk_iscsi.mutex); pthread_mutex_unlock(&g_spdk_iscsi.mutex);
if (rc < 0) { if (rc < 0) {
return rc; return rc;
} }
conn->target = *target; conn->target = target;
conn->dev = (*target)->dev; conn->dev = target->dev;
conn->target_port = spdk_scsi_dev_find_port_by_id((*target)->dev, conn->target_port = spdk_scsi_dev_find_port_by_id(target->dev,
conn->portal->group->tag); conn->portal->group->tag);
rc = iscsi_op_login_check_session(conn, rsp_pdu, rc = iscsi_op_login_check_session(conn, rsp_pdu,
@ -1514,12 +1514,12 @@ iscsi_op_login_session_normal(struct spdk_iscsi_conn *conn,
} }
/* force target flags */ /* force target flags */
pthread_mutex_lock(&((*target)->mutex)); pthread_mutex_lock(&target->mutex);
rc = iscsi_op_login_negotiate_chap_param(conn, *target); rc = iscsi_op_login_negotiate_chap_param(conn, target);
pthread_mutex_unlock(&((*target)->mutex)); pthread_mutex_unlock(&target->mutex);
if (rc == 0) { if (rc == 0) {
rc = iscsi_op_login_negotiate_digest_param(conn, *target); rc = iscsi_op_login_negotiate_digest_param(conn, target);
} }
if (rc != 0) { if (rc != 0) {
@ -1623,13 +1623,15 @@ static int
iscsi_op_login_set_conn_info(struct spdk_iscsi_conn *conn, iscsi_op_login_set_conn_info(struct spdk_iscsi_conn *conn,
struct spdk_iscsi_pdu *rsp_pdu, struct spdk_iscsi_pdu *rsp_pdu,
char *initiator_port_name, char *initiator_port_name,
enum session_type session_type, enum session_type session_type, int cid)
struct spdk_iscsi_tgt_node *target, int cid)
{ {
int rc = 0; int rc = 0;
struct spdk_iscsi_tgt_node *target;
struct iscsi_bhs_login_rsp *rsph; struct iscsi_bhs_login_rsp *rsph;
struct spdk_scsi_port *initiator_port; struct spdk_scsi_port *initiator_port;
target = conn->target;
rsph = (struct iscsi_bhs_login_rsp *)&rsp_pdu->bhs; rsph = (struct iscsi_bhs_login_rsp *)&rsp_pdu->bhs;
conn->authenticated = false; conn->authenticated = false;
conn->auth.chap_phase = ISCSI_CHAP_PHASE_WAIT_A; conn->auth.chap_phase = ISCSI_CHAP_PHASE_WAIT_A;
@ -1693,12 +1695,12 @@ static int
iscsi_op_login_set_target_info(struct spdk_iscsi_conn *conn, iscsi_op_login_set_target_info(struct spdk_iscsi_conn *conn,
struct spdk_iscsi_pdu *rsp_pdu, struct spdk_iscsi_pdu *rsp_pdu,
enum session_type session_type, enum session_type session_type,
int alloc_len, int alloc_len)
struct spdk_iscsi_tgt_node *target)
{ {
char buf[MAX_TMPBUF]; char buf[MAX_TMPBUF];
const char *val; const char *val;
int rc = 0; int rc = 0;
struct spdk_iscsi_tgt_node *target = conn->target;
struct spdk_iscsi_portal *portal = conn->portal; struct spdk_iscsi_portal *portal = conn->portal;
/* declarative parameters */ /* declarative parameters */
@ -1774,7 +1776,6 @@ iscsi_op_login_phase_none(struct spdk_iscsi_conn *conn,
enum session_type session_type; enum session_type session_type;
char initiator_port_name[MAX_INITIATOR_PORT_NAME]; char initiator_port_name[MAX_INITIATOR_PORT_NAME];
struct iscsi_bhs_login_rsp *rsph; struct iscsi_bhs_login_rsp *rsph;
struct spdk_iscsi_tgt_node *target = NULL;
int rc = 0; int rc = 0;
rsph = (struct iscsi_bhs_login_rsp *)&rsp_pdu->bhs; rsph = (struct iscsi_bhs_login_rsp *)&rsp_pdu->bhs;
@ -1796,13 +1797,12 @@ iscsi_op_login_phase_none(struct spdk_iscsi_conn *conn,
if (session_type == SESSION_TYPE_NORMAL) { if (session_type == SESSION_TYPE_NORMAL) {
rc = iscsi_op_login_session_normal(conn, rsp_pdu, rc = iscsi_op_login_session_normal(conn, rsp_pdu,
initiator_port_name, initiator_port_name,
params, &target, cid); params, cid);
if (rc < 0) { if (rc < 0) {
return rc; return rc;
} }
} else if (session_type == SESSION_TYPE_DISCOVERY) { } else if (session_type == SESSION_TYPE_DISCOVERY) {
target = NULL;
rsph->tsih = 0; rsph->tsih = 0;
/* force target flags */ /* force target flags */
@ -1821,7 +1821,7 @@ iscsi_op_login_phase_none(struct spdk_iscsi_conn *conn,
} }
rc = iscsi_op_login_set_conn_info(conn, rsp_pdu, initiator_port_name, rc = iscsi_op_login_set_conn_info(conn, rsp_pdu, initiator_port_name,
session_type, target, cid); session_type, cid);
if (rc < 0) { if (rc < 0) {
return rc; return rc;
} }
@ -1839,7 +1839,7 @@ iscsi_op_login_phase_none(struct spdk_iscsi_conn *conn,
} }
return iscsi_op_login_set_target_info(conn, rsp_pdu, session_type, return iscsi_op_login_set_target_info(conn, rsp_pdu, session_type,
alloc_len, target); alloc_len);
} }
/* /*

View File

@ -157,14 +157,13 @@ op_login_check_target_test(void)
static void static void
op_login_session_normal_test(void) op_login_session_normal_test(void)
{ {
struct spdk_iscsi_conn conn; struct spdk_iscsi_conn conn = {};
struct spdk_iscsi_portal portal; struct spdk_iscsi_portal portal;
struct spdk_iscsi_portal_grp group; struct spdk_iscsi_portal_grp group;
struct spdk_iscsi_pdu rsp_pdu = {}; struct spdk_iscsi_pdu rsp_pdu = {};
struct iscsi_bhs_login_rsp *rsph; struct iscsi_bhs_login_rsp *rsph;
struct spdk_iscsi_sess sess; struct spdk_iscsi_sess sess;
struct iscsi_param param; struct iscsi_param param;
struct spdk_iscsi_tgt_node *target;
int rc; int rc;
/* setup related data structures */ /* setup related data structures */
@ -179,7 +178,7 @@ op_login_session_normal_test(void)
/* expect failure: NULL params for target name */ /* expect failure: NULL params for target name */
rc = iscsi_op_login_session_normal(&conn, &rsp_pdu, UT_INITIATOR_NAME1, rc = iscsi_op_login_session_normal(&conn, &rsp_pdu, UT_INITIATOR_NAME1,
NULL, &target, 0); NULL, 0);
CU_ASSERT(rc != 0); CU_ASSERT(rc != 0);
CU_ASSERT(rsph->status_class == ISCSI_CLASS_INITIATOR_ERROR); CU_ASSERT(rsph->status_class == ISCSI_CLASS_INITIATOR_ERROR);
CU_ASSERT(rsph->status_detail == ISCSI_LOGIN_MISSING_PARMS); CU_ASSERT(rsph->status_detail == ISCSI_LOGIN_MISSING_PARMS);
@ -187,7 +186,7 @@ op_login_session_normal_test(void)
/* expect failure: incorrect key for target name */ /* expect failure: incorrect key for target name */
param.next = NULL; param.next = NULL;
rc = iscsi_op_login_session_normal(&conn, &rsp_pdu, UT_INITIATOR_NAME1, rc = iscsi_op_login_session_normal(&conn, &rsp_pdu, UT_INITIATOR_NAME1,
&param, &target, 0); &param, 0);
CU_ASSERT(rc != 0); CU_ASSERT(rc != 0);
CU_ASSERT(rsph->status_class == ISCSI_CLASS_INITIATOR_ERROR); CU_ASSERT(rsph->status_class == ISCSI_CLASS_INITIATOR_ERROR);
CU_ASSERT(rsph->status_detail == ISCSI_LOGIN_MISSING_PARMS); CU_ASSERT(rsph->status_detail == ISCSI_LOGIN_MISSING_PARMS);
@ -196,7 +195,7 @@ op_login_session_normal_test(void)
param.key = "TargetName"; param.key = "TargetName";
param.val = NULL; param.val = NULL;
rc = iscsi_op_login_session_normal(&conn, &rsp_pdu, UT_INITIATOR_NAME1, rc = iscsi_op_login_session_normal(&conn, &rsp_pdu, UT_INITIATOR_NAME1,
&param, &target, 0); &param, 0);
CU_ASSERT(rc != 0); CU_ASSERT(rc != 0);
CU_ASSERT(rsph->status_class == ISCSI_CLASS_INITIATOR_ERROR); CU_ASSERT(rsph->status_class == ISCSI_CLASS_INITIATOR_ERROR);
CU_ASSERT(rsph->status_detail == ISCSI_LOGIN_MISSING_PARMS); CU_ASSERT(rsph->status_detail == ISCSI_LOGIN_MISSING_PARMS);
@ -208,7 +207,7 @@ op_login_session_normal_test(void)
"%s", UT_INITIATOR_NAME1); "%s", UT_INITIATOR_NAME1);
rsph->tsih = 1; /* to append the session */ rsph->tsih = 1; /* to append the session */
rc = iscsi_op_login_session_normal(&conn, &rsp_pdu, UT_INITIATOR_NAME1, rc = iscsi_op_login_session_normal(&conn, &rsp_pdu, UT_INITIATOR_NAME1,
&param, &target, 0); &param, 0);
CU_ASSERT(conn.target_port == NULL); CU_ASSERT(conn.target_port == NULL);
CU_ASSERT(rc != 0); CU_ASSERT(rc != 0);
CU_ASSERT(rsph->status_class == ISCSI_CLASS_INITIATOR_ERROR); CU_ASSERT(rsph->status_class == ISCSI_CLASS_INITIATOR_ERROR);
@ -222,7 +221,7 @@ op_login_session_normal_test(void)
rsph->tsih = UT_ISCSI_TSIH >> 8; /* to append the session */ rsph->tsih = UT_ISCSI_TSIH >> 8; /* to append the session */
sess.tag = 1; sess.tag = 1;
rc = iscsi_op_login_session_normal(&conn, &rsp_pdu, UT_INITIATOR_NAME1, rc = iscsi_op_login_session_normal(&conn, &rsp_pdu, UT_INITIATOR_NAME1,
&param, &target, 0); &param, 0);
CU_ASSERT(conn.target_port == NULL); CU_ASSERT(conn.target_port == NULL);
CU_ASSERT(rc != 0); CU_ASSERT(rc != 0);
CU_ASSERT(rsph->status_class == ISCSI_CLASS_INITIATOR_ERROR); CU_ASSERT(rsph->status_class == ISCSI_CLASS_INITIATOR_ERROR);
@ -232,14 +231,14 @@ op_login_session_normal_test(void)
rsph->tsih = 0; /* to create the session */ rsph->tsih = 0; /* to create the session */
g_spdk_iscsi.AllowDuplicateIsid = false; g_spdk_iscsi.AllowDuplicateIsid = false;
rc = iscsi_op_login_session_normal(&conn, &rsp_pdu, UT_INITIATOR_NAME1, rc = iscsi_op_login_session_normal(&conn, &rsp_pdu, UT_INITIATOR_NAME1,
&param, &target, 0); &param, 0);
CU_ASSERT(rc == 0); CU_ASSERT(rc == 0);
/* expect suceess: create the session */ /* expect suceess: create the session */
rsph->tsih = 0; /* to create the session */ rsph->tsih = 0; /* to create the session */
g_spdk_iscsi.AllowDuplicateIsid = true; g_spdk_iscsi.AllowDuplicateIsid = true;
rc = iscsi_op_login_session_normal(&conn, &rsp_pdu, UT_INITIATOR_NAME1, rc = iscsi_op_login_session_normal(&conn, &rsp_pdu, UT_INITIATOR_NAME1,
&param, &target, 0); &param, 0);
CU_ASSERT(rc == 0); CU_ASSERT(rc == 0);
free(g_spdk_iscsi.session); free(g_spdk_iscsi.session);