iscsi: Assign not pointer but instance of spdk_cpuset in struct spdk_iscsi_portal_grp

This will reduce pontential malloc failures.

Change-Id: I9b1965e0be95af4c0496dfbae80c86b25c460c94
Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/459718
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
This commit is contained in:
Shuhei Matsumoto 2019-06-28 14:51:42 +09:00 committed by Changpeng Liu
parent 752fa1ca27
commit 666a0b5cb4
4 changed files with 14 additions and 25 deletions

View File

@ -229,7 +229,7 @@ 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->portal_cpumask = &portal->cpumask;
conn->sock = sock;
conn->state = ISCSI_CONN_STATE_INVALID;
@ -1446,7 +1446,7 @@ 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)) {
if (!spdk_cpuset_get_cpu(&conn->portal->cpumask, lcore)) {
continue;
}

View File

@ -112,7 +112,6 @@ struct spdk_iscsi_portal *
spdk_iscsi_portal_create(const char *host, const char *port, const char *cpumask)
{
struct spdk_iscsi_portal *p = NULL, *tmp;
struct spdk_cpuset *core_mask = NULL;
int rc;
assert(host != NULL);
@ -145,29 +144,21 @@ spdk_iscsi_portal_create(const char *host, const char *port, const char *cpumask
memcpy(p->port, port, strlen(port));
core_mask = spdk_cpuset_alloc();
if (!core_mask) {
SPDK_ERRLOG("spdk_cpuset_alloc() failed for host\n");
goto error_out;
}
if (cpumask != NULL) {
rc = spdk_app_parse_core_mask(cpumask, core_mask);
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(core_mask) == 0) {
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(core_mask, spdk_app_get_core_mask());
spdk_cpuset_copy(&p->cpumask, spdk_app_get_core_mask());
}
p->cpumask = core_mask;
p->sock = NULL;
p->group = NULL; /* set at a later time by caller */
p->acceptor_poller = NULL;
@ -186,7 +177,6 @@ spdk_iscsi_portal_create(const char *host, const char *port, const char *cpumask
return p;
error_out:
spdk_cpuset_free(core_mask);
free(p);
return NULL;
@ -203,7 +193,6 @@ spdk_iscsi_portal_destroy(struct spdk_iscsi_portal *p)
TAILQ_REMOVE(&g_spdk_iscsi.portal_head, p, g_tailq);
pthread_mutex_unlock(&g_spdk_iscsi.mutex);
spdk_cpuset_free(p->cpumask);
free(p);
}
@ -677,7 +666,7 @@ spdk_iscsi_portal_grps_config_text(FILE *fp)
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));
spdk_cpuset_fmt(&p->cpumask));
}
}
}
@ -699,7 +688,7 @@ 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_cpuset_fmt(&portal->cpumask));
spdk_json_write_object_end(w);
}

View File

@ -48,7 +48,7 @@ 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_cpuset cpumask;
struct spdk_poller *acceptor_poller;
TAILQ_ENTRY(spdk_iscsi_portal) per_pg_tailq;
TAILQ_ENTRY(spdk_iscsi_portal) g_tailq;

View File

@ -192,7 +192,7 @@ parse_portal_ipv4_normal_case(void)
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));
CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));
spdk_iscsi_portal_destroy(p);
CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
@ -220,7 +220,7 @@ parse_portal_ipv6_normal_case(void)
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));
CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));
spdk_iscsi_portal_destroy(p);
CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
@ -245,7 +245,7 @@ parse_portal_ipv4_skip_cpumask_case(void)
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));
CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));
spdk_iscsi_portal_destroy(p);
CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
@ -268,7 +268,7 @@ parse_portal_ipv6_skip_cpumask_case(void)
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));
CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));
spdk_iscsi_portal_destroy(p);
CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
@ -291,7 +291,7 @@ parse_portal_ipv4_skip_port_and_cpumask_case(void)
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));
CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));
spdk_iscsi_portal_destroy(p);
CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));
@ -314,7 +314,7 @@ parse_portal_ipv6_skip_port_and_cpumask_case(void)
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));
CU_ASSERT(spdk_cpuset_equal(&p->cpumask, cpumask_val));
spdk_iscsi_portal_destroy(p);
CU_ASSERT(TAILQ_EMPTY(&g_spdk_iscsi.portal_head));