iscsi: Remove cpumask from portals

Connections will soon be assigned to poll groups, which will be
dynamically moved between CPU cores based on load. It no longer makes
sense to restrict certain portal groups to specific cpu cores in this
model.

Change-Id: Iee983d75febc9797aa60021c5bc0680335e895cd
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/463358
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Ben Walker 2019-07-10 07:18:01 -07:00 committed by Changpeng Liu
parent 4c77b0059a
commit 39e850d17b
14 changed files with 51 additions and 155 deletions

View File

@ -2,6 +2,11 @@
## v19.10: (Upcoming Release)
### iSCSI
Portals may no longer be associated with a cpumask. The scheduling of
connections is moving to a more dynamic model.
## v19.07:
### ftl

View File

@ -71,13 +71,10 @@
# determine which targets are accessible over each portal group.
# Up to 1024 portal directives are allowed. These define the network
# portals of the portal group. The user must specify a IP address
# for each network portal, and may optionally specify a port and
# a cpumask. If the port is omitted, 3260 will be used. Cpumask will
# be used to set the processor affinity of the iSCSI connection
# through the portal. If the cpumask is omitted, cpumask will be
# set to all available processors.
# for each network portal, and may optionally specify a port.
# If the port is omitted, 3260 will be used.
# Syntax:
# Portal <Name> <IP address>[:<port>[@<cpumask>]]
# Portal <Name> <IP address>[:<port>]
[PortalGroup1]
Portal DA1 192.168.2.21:3260
Portal DA2 192.168.2.22:3260@0xF

View File

@ -229,7 +229,6 @@ spdk_iscsi_conn_construct(struct spdk_iscsi_portal *portal,
conn->pg_tag = portal->group->tag;
conn->portal_host = strdup(portal->host);
conn->portal_port = strdup(portal->port);
conn->portal_cpumask = &portal->cpumask;
conn->sock = sock;
conn->state = ISCSI_CONN_STATE_INVALID;
@ -1445,11 +1444,6 @@ spdk_iscsi_conn_schedule(struct spdk_iscsi_conn *conn)
lcore = g_next_core;
g_next_core = spdk_env_get_next_core(g_next_core);
if (!spdk_cpuset_get_cpu(&conn->portal->cpumask, lcore)) {
continue;
}
break;
}

View File

@ -82,7 +82,6 @@ struct spdk_iscsi_conn {
int pg_tag;
char *portal_host;
char *portal_port;
struct spdk_cpuset *portal_cpumask;
uint32_t lcore;
struct spdk_sock *sock;
struct spdk_iscsi_sess *sess;

View File

@ -799,9 +799,13 @@ spdk_rpc_add_portal_group(struct spdk_jsonrpc_request *request,
goto out;
}
for (i = 0; i < req.portal_list.num_portals; i++) {
if (req.portal_list.portals[i].cpumask) {
SPDK_WARNLOG("A portal was specified with a CPU mask which is no longer supported.\n");
SPDK_WARNLOG("Ignoring the cpumask.\n");
}
portal = spdk_iscsi_portal_create(req.portal_list.portals[i].host,
req.portal_list.portals[i].port,
req.portal_list.portals[i].cpumask);
req.portal_list.portals[i].port);
if (portal == NULL) {
SPDK_ERRLOG("portal_create failed\n");
goto out;

View File

@ -109,10 +109,9 @@ iscsi_portal_find_by_addr(const char *host, const char *port)
/* Assumes caller allocated host and port strings on the heap */
struct spdk_iscsi_portal *
spdk_iscsi_portal_create(const char *host, const char *port, const char *cpumask)
spdk_iscsi_portal_create(const char *host, const char *port)
{
struct spdk_iscsi_portal *p = NULL, *tmp;
int rc;
assert(host != NULL);
assert(port != NULL);
@ -144,21 +143,6 @@ spdk_iscsi_portal_create(const char *host, const char *port, const char *cpumask
memcpy(p->port, port, strlen(port));
if (cpumask != NULL) {
rc = spdk_app_parse_core_mask(cpumask, &p->cpumask);
if (rc < 0) {
SPDK_ERRLOG("cpumask (%s) is invalid\n", cpumask);
goto error_out;
}
if (spdk_cpuset_count(&p->cpumask) == 0) {
SPDK_ERRLOG("cpumask (%s) does not contain core mask (0x%s)\n",
cpumask, spdk_cpuset_fmt(spdk_app_get_core_mask()));
goto error_out;
}
} else {
spdk_cpuset_copy(&p->cpumask, spdk_app_get_core_mask());
}
p->sock = NULL;
p->group = NULL; /* set at a later time by caller */
p->acceptor_poller = NULL;
@ -337,9 +321,12 @@ iscsi_parse_portal(const char *portalstring, struct spdk_iscsi_portal **ip,
cpumask[len] = '\0';
}
}
if (cpumask) {
SPDK_WARNLOG("The iSCSI target no longer supports setting a per-portal cpumask.\n");
}
if (!dry_run) {
*ip = spdk_iscsi_portal_create(host, port, cpumask);
*ip = spdk_iscsi_portal_create(host, port);
if (!*ip) {
goto error_out;
}
@ -634,20 +621,17 @@ static const char *portal_group_section = \
"# determine which targets are accessible over each portal group.\n"
"# Up to 1024 Portal directives are allowed. These define the network\n"
"# portals of the portal group. The user must specify a IP address\n"
"# for each network portal, and may optionally specify a port and\n"
"# a cpumask. If the port is omitted, 3260 will be used. Cpumask will\n"
"# be used to set the processor affinity of the iSCSI connection\n"
"# through the portal. If the cpumask is omitted, cpumask will be\n"
"# set to all available processors.\n"
"# for each network portal, and may optionally specify a port.\n"
"# If the port is omitted, 3260 will be used\n"
"# Syntax:\n"
"# Portal <Name> <IP address>[:<port>[@<cpumask>]]\n";
"# Portal <Name> <IP address>[:<port>]\n";
#define PORTAL_GROUP_TMPL \
"[PortalGroup%d]\n" \
" Comment \"Portal%d\"\n"
#define PORTAL_TMPL \
" Portal DA1 %s:%s@0x%s\n"
" Portal DA1 %s:%s\n"
void
spdk_iscsi_portal_grps_config_text(FILE *fp)
@ -665,8 +649,7 @@ spdk_iscsi_portal_grps_config_text(FILE *fp)
/* Dump portals */
TAILQ_FOREACH(p, &pg->head, per_pg_tailq) {
if (NULL == p) { continue; }
fprintf(fp, PORTAL_TMPL, p->host, p->port,
spdk_cpuset_fmt(&p->cpumask));
fprintf(fp, PORTAL_TMPL, p->host, p->port);
}
}
}
@ -687,8 +670,6 @@ iscsi_portal_grp_info_json(struct spdk_iscsi_portal_grp *pg,
spdk_json_write_named_string(w, "host", portal->host);
spdk_json_write_named_string(w, "port", portal->port);
spdk_json_write_named_string_fmt(w, "cpumask", "0x%s",
spdk_cpuset_fmt(&portal->cpumask));
spdk_json_write_object_end(w);
}

View File

@ -36,7 +36,6 @@
#define SPDK_PORTAL_GRP_H
#include "spdk/conf.h"
#include "spdk/cpuset.h"
#define MAX_PORTAL_ADDR 256
#define MAX_PORTAL_PORT 32
@ -48,7 +47,6 @@ struct spdk_iscsi_portal {
char host[MAX_PORTAL_ADDR + 1];
char port[MAX_PORTAL_PORT + 1];
struct spdk_sock *sock;
struct spdk_cpuset cpumask;
struct spdk_poller *acceptor_poller;
TAILQ_ENTRY(spdk_iscsi_portal) per_pg_tailq;
TAILQ_ENTRY(spdk_iscsi_portal) g_tailq;
@ -63,8 +61,7 @@ struct spdk_iscsi_portal_grp {
/* SPDK iSCSI Portal Group management API */
struct spdk_iscsi_portal *spdk_iscsi_portal_create(const char *host, const char *port,
const char *cpumask);
struct spdk_iscsi_portal *spdk_iscsi_portal_create(const char *host, const char *port);
void spdk_iscsi_portal_destroy(struct spdk_iscsi_portal *p);
struct spdk_iscsi_portal_grp *spdk_iscsi_portal_grp_create(int tag);

View File

@ -529,8 +529,6 @@ def get_iscsi_portal_group_json(config, name):
if "@" in items[1]:
portal['port'] =\
items[1].rsplit(":", 1)[1].split("@")[0]
portal['cpumask'] =\
items[1].rsplit(":", 1)[1].split("@")[1]
else:
portal['port'] = items[1].rsplit(":", 1)[1]
portals.append(portal)

View File

@ -890,7 +890,8 @@ Format: 'user:u1 secret:s1 muser:mu1 msecret:ms1,user:u2 secret:s2 muser:mu2 mse
else:
port = split_port_cpumask[0]
cpumask = split_port_cpumask[1]
portals.append({'host': ip, 'port': port, 'cpumask': cpumask})
portals.append({'host': ip, 'port': port})
print("WARNING: Specifying a portal group with a CPU mask is no longer supported. Ignoring it.")
rpc.iscsi.add_portal_group(
args.client,
portals=portals,
@ -899,9 +900,8 @@ Format: 'user:u1 secret:s1 muser:mu1 msecret:ms1,user:u2 secret:s2 muser:mu2 mse
p = subparsers.add_parser('add_portal_group', help='Add a portal group')
p.add_argument(
'tag', help='Portal group tag (unique, integer > 0)', type=int)
p.add_argument('portal_list', help="""List of portals in host:port@cpumask format, separated by whitespace
(cpumask is optional and can be skipped)
Example: '192.168.100.100:3260 192.168.100.100:3261 192.168.100.100:3262@0x1""")
p.add_argument('portal_list', help="""List of portals in host:port format, separated by whitespace
Example: '192.168.100.100:3260 192.168.100.100:3261 192.168.100.100:3262""")
p.set_defaults(func=add_portal_group)
def add_initiator_group(args):

View File

@ -362,7 +362,7 @@ def add_portal_group(client, portals, tag):
"""Add a portal group.
Args:
portals: List of portals, e.g. [{'host': ip, 'port': port}] or [{'host': ip, 'port': port, 'cpumask': cpumask}]
portals: List of portals, e.g. [{'host': ip, 'port': port}]
tag: Initiator group tag (unique, integer > 0)
Returns:

View File

@ -298,7 +298,7 @@ class UIPortalGroups(UINode):
"""Add a portal group.
Args:
portals: List of portals e.g. ip:port@cpumask ip2:port2
portals: List of portals e.g. ip:port ip2:port2
tag: Portal group tag (unique, integer > 0)
"""
portals = []
@ -313,7 +313,7 @@ class UIPortalGroups(UINode):
host, port = host.rsplit(":", -1)
portals.append({'host': host, 'port': port})
if cpumask:
portals[-1]['cpumask'] = cpumask
print("WARNING: Specifying a CPU mask for portal groups is no longer supported. Ignoring.")
tag = self.ui_eval_param(tag, "number", None)
self.get_root().construct_portal_group(tag=tag, portals=portals)
@ -355,16 +355,16 @@ class UIPortalGroup(UINode):
def refresh(self):
self._children = set([])
for portal in self.pg.portals:
UIPortal(portal['host'], portal['port'], portal['cpumask'], self)
UIPortal(portal['host'], portal['port'], self)
def summary(self):
return "Portals: %d" % len(self.pg.portals), None
class UIPortal(UINode):
def __init__(self, host, port, cpumask, parent):
UINode.__init__(self, "host=%s, port=%s, cpumask=%s" % (
host, port, cpumask), parent)
def __init__(self, host, port, parent):
UINode.__init__(self, "host=%s, port=%s" % (
host, port), parent)
self.refresh()

View File

@ -199,7 +199,7 @@ def verify_portal_groups_rpc_methods(rpc_py, rpc_param):
for idx, value in enumerate(lo_ip):
# The portal group tag must start at 1
tag = idx + 1
rpc.add_portal_group(tag, "{}:{}@{}".format(value, rpc_param['port'], rpc_param['cpumask']))
rpc.add_portal_group(tag, "{}:{}".format(value, rpc_param['port']))
output = rpc.get_portal_groups()
jsonvalues = json.loads(output)
verify(len(jsonvalues) == tag, 1,
@ -211,8 +211,6 @@ def verify_portal_groups_rpc_methods(rpc_py, rpc_param):
"host value is {}, expected {}".format(value['portals'][0]['host'], rpc_param['target_ip']))
verify(value['portals'][0]['port'] == str(rpc_param['port']), 1,
"port value is {}, expected {}".format(value['portals'][0]['port'], str(rpc_param['port'])))
verify(value['portals'][0]['cpumask'] == format(rpc_param['cpumask'], '#x'), 1,
"cpumask value is {}, expected {}".format(value['portals'][0]['cpumask'], format(rpc_param['cpumask'], '#x')))
tag_list.append(value['tag'])
verify(value['tag'] == idx + 1, 1,
"tag value is {}, expected {}".format(value['tag'], idx + 1))
@ -231,8 +229,6 @@ def verify_portal_groups_rpc_methods(rpc_py, rpc_param):
"host value is {}, expected {}".format(jvalue['portals'][0]['host'], lo_ip[idx + jidx + 1]))
verify(jvalue['portals'][0]['port'] == str(rpc_param['port']), 1,
"port value is {}, expected {}".format(jvalue['portals'][0]['port'], str(rpc_param['port'])))
verify(jvalue['portals'][0]['cpumask'] == format(rpc_param['cpumask'], '#x'), 1,
"cpumask value is {}, expected {}".format(jvalue['portals'][0]['cpumask'], format(rpc_param['cpumask'], '#x')))
verify(jvalue['tag'] != value or jvalue['tag'] == tag_list[idx + jidx + 1], 1,
"tag value is {}, expected {} and not {}".format(jvalue['tag'], tag_list[idx + jidx + 1], value))

View File

@ -32,10 +32,10 @@ o- iscsi .......................................................................
o- iscsi_connections ............................................................................................ [Connections: 0]
o- portal_groups .............................................................................................. [Portal groups: 2]
| o- portal_group1 .................................................................................................. [Portals: 2]
| | o- host=127.0.0.1, port=3261, cpumask=0x3 .............................................................................. [...]
| | o- host=127.0.0.1, port=3263, cpumask=0x1 .............................................................................. [...]
| | o- host=127.0.0.1, port=3261 ........................................................................................... [...]
| | o- host=127.0.0.1, port=3263 ........................................................................................... [...]
| o- portal_group2 .................................................................................................. [Portals: 1]
| o- host=127.0.0.1, port=3262, cpumask=0x3 .............................................................................. [...]
| o- host=127.0.0.1, port=3262 ........................................................................................... [...]
o- target_nodes ................................................................................................ [Target nodes: 2]
o- iqn.2016-06.io.spdk:Target0 ......................................................................... [Id: 0, QueueDepth: 64]
| o- auths ........................................ [disable_chap: True, require_chap: False, mutual_chap: False, chap_group: 1]

View File

@ -67,9 +67,8 @@ portal_create_ipv4_normal_case(void)
const char *host = "192.168.2.0";
const char *port = "3260";
const char *cpumask = "1";
p = spdk_iscsi_portal_create(host, port, cpumask);
p = spdk_iscsi_portal_create(host, port);
CU_ASSERT(p != NULL);
spdk_iscsi_portal_destroy(p);
@ -83,9 +82,8 @@ portal_create_ipv6_normal_case(void)
const char *host = "[2001:ad6:1234::]";
const char *port = "3260";
const char *cpumask = "1";
p = spdk_iscsi_portal_create(host, port, cpumask);
p = spdk_iscsi_portal_create(host, port);
CU_ASSERT(p != NULL);
spdk_iscsi_portal_destroy(p);
@ -99,9 +97,8 @@ portal_create_ipv4_wildcard_case(void)
const char *host = "*";
const char *port = "3260";
const char *cpumask = "1";
p = spdk_iscsi_portal_create(host, port, cpumask);
p = spdk_iscsi_portal_create(host, port);
CU_ASSERT(p != NULL);
spdk_iscsi_portal_destroy(p);
@ -115,44 +112,14 @@ portal_create_ipv6_wildcard_case(void)
const char *host = "[*]";
const char *port = "3260";
const char *cpumask = "1";
p = spdk_iscsi_portal_create(host, port, cpumask);
p = spdk_iscsi_portal_create(host, port);
CU_ASSERT(p != NULL);
spdk_iscsi_portal_destroy(p);
CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
}
static void
portal_create_cpumask_null_case(void)
{
struct spdk_iscsi_portal *p;
const char *host = "192.168.2.0";
const char *port = "3260";
const char *cpumask = NULL;
p = spdk_iscsi_portal_create(host, port, cpumask);
CU_ASSERT(p != NULL);
spdk_iscsi_portal_destroy(p);
CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
}
static void
portal_create_cpumask_no_bit_on_case(void)
{
struct spdk_iscsi_portal *p;
const char *host = "192.168.2.0";
const char *port = "3260";
const char *cpumask = "0";
p = spdk_iscsi_portal_create(host, port, cpumask);
CU_ASSERT(p == NULL);
}
static void
portal_create_twice_case(void)
{
@ -160,12 +127,11 @@ portal_create_twice_case(void)
const char *host = "192.168.2.0";
const char *port = "3260";
const char *cpumask = "1";
p1 = spdk_iscsi_portal_create(host, port, cpumask);
p1 = spdk_iscsi_portal_create(host, port);
CU_ASSERT(p1 != NULL);
p2 = spdk_iscsi_portal_create(host, port, cpumask);
p2 = spdk_iscsi_portal_create(host, port);
CU_ASSERT(p2 == NULL);
spdk_iscsi_portal_destroy(p1);
@ -178,26 +144,18 @@ parse_portal_ipv4_normal_case(void)
const char *string = "192.168.2.0:3260@1";
const char *host_str = "192.168.2.0";
const char *port_str = "3260";
struct spdk_cpuset *cpumask_val;
struct spdk_iscsi_portal *p = NULL;
int rc;
cpumask_val = spdk_cpuset_alloc();
SPDK_CU_ASSERT_FATAL(cpumask_val != NULL);
spdk_cpuset_set_cpu(cpumask_val, 0, true);
rc = iscsi_parse_portal(string, &p, 0);
CU_ASSERT(rc == 0);
SPDK_CU_ASSERT_FATAL(p != NULL);
CU_ASSERT(strcmp(p->host, host_str) == 0);
CU_ASSERT(strcmp(p->port, port_str) == 0);
CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));
spdk_iscsi_portal_destroy(p);
CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
spdk_cpuset_free(cpumask_val);
}
static void
@ -206,26 +164,17 @@ parse_portal_ipv6_normal_case(void)
const char *string = "[2001:ad6:1234::]:3260@1";
const char *host_str = "[2001:ad6:1234::]";
const char *port_str = "3260";
struct spdk_cpuset *cpumask_val;
struct spdk_iscsi_portal *p = NULL;
int rc;
cpumask_val = spdk_cpuset_alloc();
SPDK_CU_ASSERT_FATAL(cpumask_val != NULL);
spdk_cpuset_set_cpu(cpumask_val, 0, true);
rc = iscsi_parse_portal(string, &p, 0);
CU_ASSERT(rc == 0);
SPDK_CU_ASSERT_FATAL(p != NULL);
CU_ASSERT(strcmp(p->host, host_str) == 0);
CU_ASSERT(strcmp(p->port, port_str) == 0);
CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));
spdk_iscsi_portal_destroy(p);
CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
spdk_cpuset_free(cpumask_val);
}
static void
@ -234,18 +183,14 @@ parse_portal_ipv4_skip_cpumask_case(void)
const char *string = "192.168.2.0:3260";
const char *host_str = "192.168.2.0";
const char *port_str = "3260";
struct spdk_cpuset *cpumask_val;
struct spdk_iscsi_portal *p = NULL;
int rc;
cpumask_val = spdk_app_get_core_mask();
rc = iscsi_parse_portal(string, &p, 0);
CU_ASSERT(rc == 0);
SPDK_CU_ASSERT_FATAL(p != NULL);
CU_ASSERT(strcmp(p->host, host_str) == 0);
CU_ASSERT(strcmp(p->port, port_str) == 0);
CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));
spdk_iscsi_portal_destroy(p);
CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
@ -257,18 +202,14 @@ parse_portal_ipv6_skip_cpumask_case(void)
const char *string = "[2001:ad6:1234::]:3260";
const char *host_str = "[2001:ad6:1234::]";
const char *port_str = "3260";
struct spdk_cpuset *cpumask_val;
struct spdk_iscsi_portal *p = NULL;
int rc;
cpumask_val = spdk_app_get_core_mask();
rc = iscsi_parse_portal(string, &p, 0);
CU_ASSERT(rc == 0);
SPDK_CU_ASSERT_FATAL(p != NULL);
CU_ASSERT(strcmp(p->host, host_str) == 0);
CU_ASSERT(strcmp(p->port, port_str) == 0);
CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));
spdk_iscsi_portal_destroy(p);
CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
@ -280,18 +221,14 @@ parse_portal_ipv4_skip_port_and_cpumask_case(void)
const char *string = "192.168.2.0";
const char *host_str = "192.168.2.0";
const char *port_str = "3260";
struct spdk_cpuset *cpumask_val;
struct spdk_iscsi_portal *p = NULL;
int rc;
cpumask_val = spdk_app_get_core_mask();
rc = iscsi_parse_portal(string, &p, 0);
CU_ASSERT(rc == 0);
SPDK_CU_ASSERT_FATAL(p != NULL);
CU_ASSERT(strcmp(p->host, host_str) == 0);
CU_ASSERT(strcmp(p->port, port_str) == 0);
CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));
spdk_iscsi_portal_destroy(p);
CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
@ -303,18 +240,14 @@ parse_portal_ipv6_skip_port_and_cpumask_case(void)
const char *string = "[2001:ad6:1234::]";
const char *host_str = "[2001:ad6:1234::]";
const char *port_str = "3260";
struct spdk_cpuset *cpumask_val;
struct spdk_iscsi_portal *p = NULL;
int rc;
cpumask_val = spdk_app_get_core_mask();
rc = iscsi_parse_portal(string, &p, 0);
CU_ASSERT(rc == 0);
SPDK_CU_ASSERT_FATAL(p != NULL);
CU_ASSERT(strcmp(p->host, host_str) == 0);
CU_ASSERT(strcmp(p->port, port_str) == 0);
CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));
spdk_iscsi_portal_destroy(p);
CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
@ -328,12 +261,11 @@ portal_grp_register_unregister_case(void)
int rc;
const char *host = "192.168.2.0";
const char *port = "3260";
const char *cpumask = "1";
pg1 = spdk_iscsi_portal_grp_create(1);
CU_ASSERT(pg1 != NULL);
p = spdk_iscsi_portal_create(host, port, cpumask);
p = spdk_iscsi_portal_create(host, port);
CU_ASSERT(p != NULL);
spdk_iscsi_portal_grp_add_portal(pg1, p);
@ -360,12 +292,11 @@ portal_grp_register_twice_case(void)
int rc;
const char *host = "192.168.2.0";
const char *port = "3260";
const char *cpumask = "1";
pg1 = spdk_iscsi_portal_grp_create(1);
CU_ASSERT(pg1 != NULL);
p = spdk_iscsi_portal_create(host, port, cpumask);
p = spdk_iscsi_portal_create(host, port);
CU_ASSERT(p != NULL);
spdk_iscsi_portal_grp_add_portal(pg1, p);
@ -401,13 +332,12 @@ portal_grp_add_delete_case(void)
const char *host = "192.168.2.0";
const char *port = "3260";
const char *cpumask = "1";
/* internal of add_portal_group */
pg1 = spdk_iscsi_portal_grp_create(1);
CU_ASSERT(pg1 != NULL);
p = spdk_iscsi_portal_create(host, port, cpumask);
p = spdk_iscsi_portal_create(host, port);
CU_ASSERT(p != NULL);
spdk_iscsi_portal_grp_add_portal(pg1, p);
@ -445,7 +375,6 @@ portal_grp_add_delete_twice_case(void)
const char *host = "192.168.2.0";
const char *port1 = "3260", *port2 = "3261";
const char *cpumask = "1";
thread = spdk_thread_create(NULL, NULL);
spdk_set_thread(thread);
@ -454,7 +383,7 @@ portal_grp_add_delete_twice_case(void)
pg1 = spdk_iscsi_portal_grp_create(1);
CU_ASSERT(pg1 != NULL);
p = spdk_iscsi_portal_create(host, port1, cpumask);
p = spdk_iscsi_portal_create(host, port1);
CU_ASSERT(p != NULL);
spdk_iscsi_portal_grp_add_portal(pg1, p);
@ -470,7 +399,7 @@ portal_grp_add_delete_twice_case(void)
pg2 = spdk_iscsi_portal_grp_create(2);
CU_ASSERT(pg2 != NULL);
p = spdk_iscsi_portal_create(host, port2, cpumask);
p = spdk_iscsi_portal_create(host, port2);
CU_ASSERT(p != NULL);
spdk_iscsi_portal_grp_add_portal(pg2, p);
@ -520,10 +449,6 @@ main(int argc, char **argv)
portal_create_ipv4_wildcard_case) == NULL
|| CU_add_test(suite, "portal create ipv6 wildcard case",
portal_create_ipv6_wildcard_case) == NULL
|| CU_add_test(suite, "portal create cpumask NULL case",
portal_create_cpumask_null_case) == NULL
|| CU_add_test(suite, "portal create cpumask no bit on case",
portal_create_cpumask_no_bit_on_case) == NULL
|| CU_add_test(suite, "portal create twice case",
portal_create_twice_case) == NULL
|| CU_add_test(suite, "parse portal ipv4 normal case",