Commit 5af8a05e authored by Amir Shehata's avatar Amir Shehata Committed by Greg Kroah-Hartman

staging: lustre: return -EEXIST if NI is not unique

Return -EEXIST and not -EINVAL when trying to add a
network interface which is not unique.

Some minor cleanup in api-ni.c
Signed-off-by: default avatarAmir Shehata <amir.shehata@intel.com>
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-5875
Reviewed-on: http://review.whamcloud.com/13056Reviewed-by: default avatarIsaac Huang <he.huang@intel.com>
Reviewed-by: default avatarJames Simmons <uja.ornl@gmail.com>
Reviewed-by: default avatarOleg Drokin <oleg.drokin@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 445c6a1e
...@@ -1219,7 +1219,7 @@ static int ...@@ -1219,7 +1219,7 @@ static int
lnet_startup_lndni(struct lnet_ni *ni, __s32 peer_timeout, lnet_startup_lndni(struct lnet_ni *ni, __s32 peer_timeout,
__s32 peer_cr, __s32 peer_buf_cr, __s32 credits) __s32 peer_cr, __s32 peer_buf_cr, __s32 credits)
{ {
int rc = 0; int rc = -EINVAL;
int lnd_type; int lnd_type;
lnd_t *lnd; lnd_t *lnd;
struct lnet_tx_queue *tq; struct lnet_tx_queue *tq;
...@@ -1237,19 +1237,19 @@ lnet_startup_lndni(struct lnet_ni *ni, __s32 peer_timeout, ...@@ -1237,19 +1237,19 @@ lnet_startup_lndni(struct lnet_ni *ni, __s32 peer_timeout,
/* Make sure this new NI is unique. */ /* Make sure this new NI is unique. */
lnet_net_lock(LNET_LOCK_EX); lnet_net_lock(LNET_LOCK_EX);
if (!lnet_net_unique(LNET_NIDNET(ni->ni_nid), &the_lnet.ln_nis)) { rc = lnet_net_unique(LNET_NIDNET(ni->ni_nid), &the_lnet.ln_nis);
lnet_net_unlock(LNET_LOCK_EX);
if (!rc) {
if (lnd_type == LOLND) { if (lnd_type == LOLND) {
lnet_net_unlock(LNET_LOCK_EX);
lnet_ni_free(ni); lnet_ni_free(ni);
return 0; return 0;
} }
lnet_net_unlock(LNET_LOCK_EX);
CERROR("Net %s is not unique\n", CERROR("Net %s is not unique\n",
libcfs_net2str(LNET_NIDNET(ni->ni_nid))); libcfs_net2str(LNET_NIDNET(ni->ni_nid)));
rc = -EEXIST;
goto failed0; goto failed0;
} }
lnet_net_unlock(LNET_LOCK_EX);
mutex_lock(&the_lnet.ln_lnd_mutex); mutex_lock(&the_lnet.ln_lnd_mutex);
lnd = lnet_find_lnd_by_type(lnd_type); lnd = lnet_find_lnd_by_type(lnd_type);
...@@ -1265,6 +1265,7 @@ lnet_startup_lndni(struct lnet_ni *ni, __s32 peer_timeout, ...@@ -1265,6 +1265,7 @@ lnet_startup_lndni(struct lnet_ni *ni, __s32 peer_timeout,
CERROR("Can't load LND %s, module %s, rc=%d\n", CERROR("Can't load LND %s, module %s, rc=%d\n",
libcfs_lnd2str(lnd_type), libcfs_lnd2str(lnd_type),
libcfs_lnd2modname(lnd_type), rc); libcfs_lnd2modname(lnd_type), rc);
rc = -EINVAL;
goto failed0; goto failed0;
} }
} }
...@@ -1354,7 +1355,7 @@ lnet_startup_lndni(struct lnet_ni *ni, __s32 peer_timeout, ...@@ -1354,7 +1355,7 @@ lnet_startup_lndni(struct lnet_ni *ni, __s32 peer_timeout,
return 0; return 0;
failed0: failed0:
lnet_ni_free(ni); lnet_ni_free(ni);
return -EINVAL; return rc;
} }
static int static int
...@@ -1503,7 +1504,7 @@ int ...@@ -1503,7 +1504,7 @@ int
LNetNIInit(lnet_pid_t requested_pid) LNetNIInit(lnet_pid_t requested_pid)
{ {
int im_a_router = 0; int im_a_router = 0;
int rc, rc2; int rc;
int ni_count; int ni_count;
lnet_ping_info_t *pinfo; lnet_ping_info_t *pinfo;
lnet_handle_md_t md_handle; lnet_handle_md_t md_handle;
...@@ -1592,10 +1593,7 @@ LNetNIInit(lnet_pid_t requested_pid) ...@@ -1592,10 +1593,7 @@ LNetNIInit(lnet_pid_t requested_pid)
return 0; return 0;
err_stop_ping: err_stop_ping:
lnet_ping_md_unlink(pinfo, &md_handle); lnet_ping_target_fini();
lnet_ping_info_free(pinfo);
rc2 = LNetEQFree(the_lnet.ln_ping_target_eq);
LASSERT(!rc2);
err_acceptor_stop: err_acceptor_stop:
the_lnet.ln_refcount = 0; the_lnet.ln_refcount = 0;
lnet_acceptor_stop(); lnet_acceptor_stop();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment