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:
parent
4c77b0059a
commit
39e850d17b
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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):
|
||||
|
@ -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:
|
||||
|
@ -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()
|
||||
|
||||
|
||||
|
@ -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))
|
||||
|
||||
|
@ -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]
|
||||
|
@ -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",
|
||||
|
Loading…
Reference in New Issue
Block a user