iscsi: Use cached portal group tag of connection widely

pg_tag was added to struct spdk_iscsi_conn long ago but had not
been used yet. Portal group and its portals can be removed
dynamically even if there is any binded connection. Using cached
pg_tag will avoid potential errors.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Ic7a96ef97c3cab7e5a58aa7f439364b53694a1e4
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/463874
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>
This commit is contained in:
Shuhei Matsumoto 2019-08-01 17:45:50 +09:00 committed by Jim Harris
parent 23eb38f1ac
commit f338b43a86
2 changed files with 8 additions and 8 deletions

View File

@ -1505,7 +1505,7 @@ iscsi_op_login_session_normal(struct spdk_iscsi_conn *conn,
conn->target = target;
conn->dev = target->dev;
conn->target_port = spdk_scsi_dev_find_port_by_id(target->dev,
conn->portal->group->tag);
conn->pg_tag);
rc = iscsi_op_login_check_session(conn, rsp_pdu,
initiator_port_name, cid);
@ -1719,13 +1719,13 @@ iscsi_op_login_set_target_info(struct spdk_iscsi_conn *conn,
}
}
snprintf(buf, sizeof buf, "%s:%s,%d", portal->host, portal->port,
portal->group->tag);
conn->pg_tag);
rc = spdk_iscsi_param_set(conn->sess->params, "TargetAddress", buf);
if (rc < 0) {
SPDK_ERRLOG("iscsi_param_set() failed\n");
return SPDK_ISCSI_LOGIN_ERROR_PARAMETER;
}
snprintf(buf, sizeof buf, "%d", portal->group->tag);
snprintf(buf, sizeof buf, "%d", conn->pg_tag);
rc = spdk_iscsi_param_set(conn->sess->params, "TargetPortalGroupTag", buf);
if (rc < 0) {
SPDK_ERRLOG("iscsi_param_set() failed\n");
@ -2082,7 +2082,7 @@ iscsi_op_login_notify_session_info(struct spdk_iscsi_conn *conn,
" CID=%u, HeaderDigest=%s, DataDigest=%s\n",
conn->initiator_name, conn->initiator_addr,
conn->target->name, conn->target->num,
conn->portal->host, conn->portal->port, conn->portal->group->tag,
conn->portal->host, conn->portal->port, conn->pg_tag,
conn->sess->isid, conn->sess->tsih, conn->cid,
(spdk_iscsi_param_eq_val(conn->params, "HeaderDigest", "CRC32C")
? "on" : "off"),
@ -2094,7 +2094,7 @@ iscsi_op_login_notify_session_info(struct spdk_iscsi_conn *conn,
" (%s:%s,%d), ISID=%"PRIx64", TSIH=%u,"
" CID=%u, HeaderDigest=%s, DataDigest=%s\n",
conn->initiator_name, conn->initiator_addr,
conn->portal->host, conn->portal->port, conn->portal->group->tag,
conn->portal->host, conn->portal->port, conn->pg_tag,
conn->sess->isid, conn->sess->tsih, conn->cid,
(spdk_iscsi_param_eq_val(conn->params, "HeaderDigest", "CRC32C")
? "on" : "off"),
@ -4759,7 +4759,7 @@ create_iscsi_sess(struct spdk_iscsi_conn *conn,
pthread_mutex_unlock(&g_spdk_iscsi.mutex);
sess->tag = conn->portal->group->tag;
sess->tag = conn->pg_tag;
sess->conns = calloc(sess->MaxConnections, sizeof(*sess->conns));
if (!sess->conns) {
@ -4909,7 +4909,7 @@ append_iscsi_sess(struct spdk_iscsi_conn *conn,
SPDK_ERRLOG("spdk_get_iscsi_sess_by_tsih failed\n");
return ISCSI_LOGIN_CONN_ADD_FAIL;
}
if ((conn->portal->group->tag != sess->tag) ||
if ((conn->pg_tag != sess->tag) ||
(strcasecmp(initiator_port_name, spdk_scsi_port_get_name(sess->initiator_port)) != 0) ||
(conn->target != sess->target)) {
/* no match */

View File

@ -268,7 +268,7 @@ spdk_iscsi_tgt_node_access(struct spdk_iscsi_conn *conn,
denied:
SPDK_DEBUGLOG(SPDK_LOG_ISCSI, "access denied from %s (%s) to %s (%s:%s,%d)\n",
iqn, addr, target->name, conn->portal->host,
conn->portal->port, conn->portal->group->tag);
conn->portal->port, conn->pg_tag);
return false;
}