X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lnet%2Fklnds%2Fsocklnd%2Fsocklnd.c;h=f3fff31586224c02422668e0e8348d61d7297beb;hp=bfe6a0262c284947c5125af424300de8fc80d83f;hb=0c91d49a44e1214b5c65d4a557f6969b3d217881;hpb=00898697f998c095e6dab3dd27e347cb1150ee8c diff --git a/lnet/klnds/socklnd/socklnd.c b/lnet/klnds/socklnd/socklnd.c index bfe6a02..f3fff31 100644 --- a/lnet/klnds/socklnd/socklnd.c +++ b/lnet/klnds/socklnd/socklnd.c @@ -645,14 +645,17 @@ ksocknal_add_peer(struct lnet_ni *ni, struct lnet_processid *id, nidhash(&id->nid)); } - ksocknal_add_conn_cb_locked(peer_ni, conn_cb); - - /* Remember conns_per_peer setting at the time - * of connection initiation. It will define the - * max number of conns per type for this conn_cb - * while it's in use. - */ - conn_cb->ksnr_max_conns = ksocknal_get_conns_per_peer(peer_ni); + if (peer_ni->ksnp_conn_cb) { + ksocknal_conn_cb_decref(conn_cb); + } else { + ksocknal_add_conn_cb_locked(peer_ni, conn_cb); + /* Remember conns_per_peer setting at the time + * of connection initiation. It will define the + * max number of conns per type for this conn_cb + * while it's in use. + */ + conn_cb->ksnr_max_conns = ksocknal_get_conns_per_peer(peer_ni); + } write_unlock_bh(&ksocknal_data.ksnd_global_lock);