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:
parent
23eb38f1ac
commit
f338b43a86
@ -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 */
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user