<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Reviewed-by: Doug Oucharek &lt;<a href="mailto:dougso@me.com" class="">dougso@me.com</a>&gt;
<div class=""><br class="">
</div>
<div class="">Doug</div>
<div class=""><br class="">
<div style="">
<blockquote type="cite" class="">
<div class="">On Sep 6, 2018, at 5:49 PM, NeilBrown &lt;<a href="mailto:neilb@suse.com" class="">neilb@suse.com</a>&gt; wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div class="">When choosing a cpt to use for a given network (identified by nid),<br class="">
the choice might depend on a particular interface which has<br class="">
already been identified - different interfaces can have different<br class="">
sets of cpts.<br class="">
<br class="">
So add an 'ni' arg to lnet_cpt_of_nid(). If given, choose a cpt<br class="">
from the cpts of that interface. If not given, choose one from<br class="">
the set of all cpts associated with any interface on the network.<br class="">
<br class="">
This is part of<br class="">
&nbsp;&nbsp;&nbsp;8cbb8cd3e771e7f7e0f99cafc19fad32770dc015<br class="">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LU-7734 lnet: Multi-Rail local NI split<br class="">
<br class="">
Signed-off-by: NeilBrown &lt;<a href="mailto:neilb@suse.com" class="">neilb@suse.com</a>&gt;<br class="">
---<br class="">
.../staging/lustre/include/linux/lnet/lib-lnet.h &nbsp;&nbsp;| &nbsp;&nbsp;&nbsp;4 &#43;-<br class="">
.../staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c &nbsp;&nbsp;&nbsp;| &nbsp;&nbsp;&nbsp;4 &#43;-<br class="">
.../staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c | &nbsp;&nbsp;&nbsp;2 -<br class="">
.../staging/lustre/lnet/klnds/socklnd/socklnd.c &nbsp;&nbsp;&nbsp;| &nbsp;&nbsp;&nbsp;4 &#43;-<br class="">
drivers/staging/lustre/lnet/lnet/api-ni.c &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| &nbsp;&nbsp;41 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;--------<br class="">
drivers/staging/lustre/lnet/lnet/lib-move.c &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| &nbsp;&nbsp;12 &#43;&#43;&#43;---<br class="">
drivers/staging/lustre/lnet/lnet/lib-ptl.c &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| &nbsp;&nbsp;&nbsp;2 -<br class="">
drivers/staging/lustre/lnet/lnet/peer.c &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| &nbsp;&nbsp;&nbsp;4 &#43;-<br class="">
drivers/staging/lustre/lnet/lnet/router.c &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| &nbsp;&nbsp;&nbsp;4 &#43;-<br class="">
drivers/staging/lustre/lnet/selftest/brw_test.c &nbsp;&nbsp;&nbsp;| &nbsp;&nbsp;&nbsp;2 -<br class="">
drivers/staging/lustre/lnet/selftest/framework.c &nbsp;&nbsp;| &nbsp;&nbsp;&nbsp;3 &#43;<br class="">
drivers/staging/lustre/lnet/selftest/selftest.h &nbsp;&nbsp;&nbsp;| &nbsp;&nbsp;&nbsp;2 -<br class="">
12 files changed, 48 insertions(&#43;), 36 deletions(-)<br class="">
<br class="">
diff --git a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h<br class="">
index 34509e52bac7..e32dbb854d80 100644<br class="">
--- a/drivers/staging/lustre/include/linux/lnet/lib-lnet.h<br class="">
&#43;&#43;&#43; b/drivers/staging/lustre/include/linux/lnet/lib-lnet.h<br class="">
@@ -395,8 &#43;395,8 @@ lnet_net2rnethash(__u32 net)<br class="">
extern struct lnet_lnd the_lolnd;<br class="">
extern int avoid_asym_router_failure;<br class="">
<br class="">
-int lnet_cpt_of_nid_locked(lnet_nid_t nid);<br class="">
-int lnet_cpt_of_nid(lnet_nid_t nid);<br class="">
&#43;int lnet_cpt_of_nid_locked(lnet_nid_t nid, struct lnet_ni *ni);<br class="">
&#43;int lnet_cpt_of_nid(lnet_nid_t nid, struct lnet_ni *ni);<br class="">
struct lnet_ni *lnet_nid2ni_locked(lnet_nid_t nid, int cpt);<br class="">
struct lnet_ni *lnet_net2ni_locked(__u32 net, int cpt);<br class="">
struct lnet_ni *lnet_net2ni(__u32 net);<br class="">
diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c<br class="">
index ade566d20c69..958ac9a99045 100644<br class="">
--- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c<br class="">
&#43;&#43;&#43; b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c<br class="">
@@ -320,7 &#43;320,7 @@ int kiblnd_create_peer(struct lnet_ni *ni, struct kib_peer **peerp,<br class="">
{<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>struct kib_peer *peer;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>struct kib_net *net = ni-&gt;ni_data;<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>int cpt = lnet_cpt_of_nid(nid);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>int cpt = lnet_cpt_of_nid(nid, ni);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>unsigned long flags;<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>LASSERT(net);<br class="">
@@ -643,7 &#43;643,7 @@ struct kib_conn *kiblnd_create_conn(struct kib_peer *peer, struct rdma_cm_id *cm<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>dev = net-&gt;ibn_dev;<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(peer-&gt;ibp_nid);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(peer-&gt;ibp_nid, peer-&gt;ibp_ni);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>sched = kiblnd_data.kib_scheds[cpt];<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>LASSERT(sched-&gt;ibs_nthreads &gt; 0);<br class="">
diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c<br class="">
index c266940cb2ae..e64c14914924 100644<br class="">
--- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c<br class="">
&#43;&#43;&#43; b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c<br class="">
@@ -119,7 &#43;119,7 @@ kiblnd_get_idle_tx(struct lnet_ni *ni, lnet_nid_t target)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>struct kib_tx *tx;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>struct kib_tx_poolset *tps;<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>tps = net-&gt;ibn_tx_ps[lnet_cpt_of_nid(target)];<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>tps = net-&gt;ibn_tx_ps[lnet_cpt_of_nid(target, ni)];<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>node = kiblnd_pool_alloc_node(&amp;tps-&gt;tps_poolset);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>if (!node)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>return NULL;<br class="">
diff --git a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c<br class="">
index 2036a0ae5917..ba68bcee90bc 100644<br class="">
--- a/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c<br class="">
&#43;&#43;&#43; b/drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c<br class="">
@@ -101,7 &#43;101,7 @@ static int<br class="">
ksocknal_create_peer(struct ksock_peer **peerp, struct lnet_ni *ni,<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>&nbsp;&nbsp;&nbsp;&nbsp;struct lnet_process_id id)<br class="">
{<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>int cpt = lnet_cpt_of_nid(id.nid);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>int cpt = lnet_cpt_of_nid(id.nid, ni);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>struct ksock_net *net = ni-&gt;ni_data;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>struct ksock_peer *peer;<br class="">
<br class="">
@@ -1099,7 &#43;1099,7 @@ ksocknal_create_conn(struct lnet_ni *ni, struct ksock_route *route,<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>LASSERT(conn-&gt;ksnc_proto);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>LASSERT(peerid.nid != LNET_NID_ANY);<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(peerid.nid);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(peerid.nid, ni);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>if (active) {<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>ksocknal_peer_addref(peer);<br class="">
diff --git a/drivers/staging/lustre/lnet/lnet/api-ni.c b/drivers/staging/lustre/lnet/lnet/api-ni.c<br class="">
index c21aef32cdde..6e0b8310574d 100644<br class="">
--- a/drivers/staging/lustre/lnet/lnet/api-ni.c<br class="">
&#43;&#43;&#43; b/drivers/staging/lustre/lnet/lnet/api-ni.c<br class="">
@@ -713,31 &#43;713,41 @@ lnet_nid_cpt_hash(lnet_nid_t nid, unsigned int number)<br class="">
}<br class="">
<br class="">
int<br class="">
-lnet_cpt_of_nid_locked(lnet_nid_t nid)<br class="">
&#43;lnet_cpt_of_nid_locked(lnet_nid_t nid, struct lnet_ni *ni)<br class="">
{<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>struct lnet_ni *ni;<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>struct lnet_net *net;<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>/* must called with hold of lnet_net_lock */<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>if (LNET_CPT_NUMBER == 1)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>return 0; /* the only one */<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>/* take lnet_net_lock(any) would be OK */<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>if (!list_empty(&amp;the_lnet.ln_nis_cpt)) {<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>list_for_each_entry(ni, &amp;the_lnet.ln_nis_cpt, ni_cptlist) {<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>if (LNET_NIDNET(ni-&gt;ni_nid) != LNET_NIDNET(nid))<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>continue;<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>/*<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>* If NI is provided then use the CPT identified in the NI cpt<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>* list if one exists. If one doesn't exist, then that NI is<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>* associated with all CPTs and it follows that the net it belongs<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>* to is implicitly associated with all CPTs, so just hash the nid<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>* and return that.<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>*/<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>if (ni != NULL) {<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>if (ni-&gt;ni_cpts != NULL)<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>return ni-&gt;ni_cpts[lnet_nid_cpt_hash(nid,<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>&nbsp;&nbsp;&nbsp;&nbsp;ni-&gt;ni_ncpts)];<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>else<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>return lnet_nid_cpt_hash(nid, LNET_CPT_NUMBER);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>}<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>LASSERT(ni-&gt;ni_cpts);<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>return ni-&gt;ni_cpts[lnet_nid_cpt_hash<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>&nbsp;&nbsp;(nid,
 ni-&gt;ni_ncpts)];<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>}<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>/* no NI provided so look at the net */<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>net = lnet_get_net_locked(LNET_NIDNET(nid));<br class="">
&#43;<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>if (net != NULL &amp;&amp; net-&gt;net_cpts) {<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>return net-&gt;net_cpts[lnet_nid_cpt_hash(nid, net-&gt;net_ncpts)];<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>}<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>return lnet_nid_cpt_hash(nid, LNET_CPT_NUMBER);<br class="">
}<br class="">
<br class="">
int<br class="">
-lnet_cpt_of_nid(lnet_nid_t nid)<br class="">
&#43;lnet_cpt_of_nid(lnet_nid_t nid, struct lnet_ni *ni)<br class="">
{<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>int cpt;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>int cpt2;<br class="">
@@ -745,11 &#43;755,10 @@ lnet_cpt_of_nid(lnet_nid_t nid)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>if (LNET_CPT_NUMBER == 1)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>return 0; /* the only one */<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>if (list_empty(&amp;the_lnet.ln_nis_cpt))<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>return lnet_nid_cpt_hash(nid, LNET_CPT_NUMBER);<br class="">
-<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>cpt = lnet_net_lock_current();<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt2 = lnet_cpt_of_nid_locked(nid);<br class="">
&#43;<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>cpt2 = lnet_cpt_of_nid_locked(nid, ni);<br class="">
&#43;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lnet_net_unlock(cpt);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>return cpt2;<br class="">
diff --git a/drivers/staging/lustre/lnet/lnet/lib-move.c b/drivers/staging/lustre/lnet/lnet/lib-move.c<br class="">
index b6e81a693fc3..02cd1a5a466f 100644<br class="">
--- a/drivers/staging/lustre/lnet/lnet/lib-move.c<br class="">
&#43;&#43;&#43; b/drivers/staging/lustre/lnet/lnet/lib-move.c<br class="">
@@ -1095,7 &#43;1095,9 @@ lnet_send(lnet_nid_t src_nid, struct lnet_msg *msg, lnet_nid_t rtr_nid)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>msg-&gt;msg_sending = 1;<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>LASSERT(!msg-&gt;msg_tx_committed);<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(rtr_nid == LNET_NID_ANY ? dst_nid : rtr_nid);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>local_ni = lnet_net2ni(LNET_NIDNET(dst_nid));<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(rtr_nid == LNET_NID_ANY ? dst_nid : rtr_nid,<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local_ni);<br class="">
&nbsp;again:<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lnet_net_lock(cpt);<br class="">
<br class="">
@@ -1188,7 &#43;1190,7 @@ lnet_send(lnet_nid_t src_nid, struct lnet_msg *msg, lnet_nid_t rtr_nid)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>* was changed when we release the lock<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>*/<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>if (rtr_nid != lp-&gt;lp_nid) {<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>cpt2 = lnet_cpt_of_nid_locked(lp-&gt;lp_nid);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>cpt2 = lp-&gt;lp_cpt;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>if (cpt2 != cpt) {<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>if (src_ni)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>lnet_ni_decref_locked(src_ni,
 cpt);<br class="">
@@ -1677,7 &#43;1679,7 @@ lnet_parse(struct lnet_ni *ni, struct lnet_hdr *hdr, lnet_nid_t from_nid,<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>payload_length = le32_to_cpu(hdr-&gt;payload_length);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>for_me = (ni-&gt;ni_nid == dest_nid);<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(from_nid);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(from_nid, ni);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>switch (type) {<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>case LNET_MSG_ACK:<br class="">
@@ -2149,7 &#43;2151,7 @@ lnet_create_reply_msg(struct lnet_ni *ni, struct lnet_msg *getmsg)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lnet_msg_attach_md(msg, getmd, getmd-&gt;md_offset, getmd-&gt;md_length);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lnet_res_unlock(cpt);<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(peer_id.nid);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(peer_id.nid, ni);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lnet_net_lock(cpt);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lnet_msg_commit(msg, cpt);<br class="">
@@ -2160,7 &#43;2162,7 @@ lnet_create_reply_msg(struct lnet_ni *ni, struct lnet_msg *getmsg)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>return msg;<br class="">
<br class="">
&nbsp;drop:<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(peer_id.nid);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(peer_id.nid, ni);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lnet_net_lock(cpt);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>the_lnet.ln_counters[cpt]-&gt;drop_count&#43;&#43;;<br class="">
diff --git a/drivers/staging/lustre/lnet/lnet/lib-ptl.c b/drivers/staging/lustre/lnet/lnet/lib-ptl.c<br class="">
index 90ce51801726..c8d8162cc706 100644<br class="">
--- a/drivers/staging/lustre/lnet/lnet/lib-ptl.c<br class="">
&#43;&#43;&#43; b/drivers/staging/lustre/lnet/lnet/lib-ptl.c<br class="">
@@ -220,7 &#43;220,7 @@ lnet_match2mt(struct lnet_portal *ptl, struct lnet_process_id id, __u64 mbits)<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>/* if it's a unique portal, return match-table hashed by NID */<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>return lnet_ptl_is_unique(ptl) ?<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ptl-&gt;ptl_mtables[lnet_cpt_of_nid(id.nid)] : NULL;<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ptl-&gt;ptl_mtables[lnet_cpt_of_nid(id.nid, NULL)] : NULL;<br class="">
}<br class="">
<br class="">
struct lnet_match_table *<br class="">
diff --git a/drivers/staging/lustre/lnet/lnet/peer.c b/drivers/staging/lustre/lnet/lnet/peer.c<br class="">
index ed29124ebded..808ce25f1f00 100644<br class="">
--- a/drivers/staging/lustre/lnet/lnet/peer.c<br class="">
&#43;&#43;&#43; b/drivers/staging/lustre/lnet/lnet/peer.c<br class="">
@@ -270,7 &#43;270,7 @@ lnet_nid2peer_locked(struct lnet_peer **lpp, lnet_nid_t nid, int cpt)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>return -ESHUTDOWN;<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>/* cpt can be LNET_LOCK_EX if it's called from router functions */<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt2 = cpt != LNET_LOCK_EX ? cpt : lnet_cpt_of_nid_locked(nid);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>cpt2 = cpt != LNET_LOCK_EX ? cpt : lnet_cpt_of_nid_locked(nid, NULL);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>ptable = the_lnet.ln_peer_tables[cpt2];<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lp = lnet_find_peer_locked(ptable, nid);<br class="">
@@ -362,7 &#43;362,7 @@ lnet_debug_peer(lnet_nid_t nid)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>int rc;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>int cpt;<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(nid);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>cpt = lnet_cpt_of_nid(nid, NULL);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>lnet_net_lock(cpt);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>rc = lnet_nid2peer_locked(&amp;lp, nid, cpt);<br class="">
diff --git a/drivers/staging/lustre/lnet/lnet/router.c b/drivers/staging/lustre/lnet/lnet/router.c<br class="">
index 72b8ca2b0fc6..5493d13de6d9 100644<br class="">
--- a/drivers/staging/lustre/lnet/lnet/router.c<br class="">
&#43;&#43;&#43; b/drivers/staging/lustre/lnet/lnet/router.c<br class="">
@@ -1207,7 &#43;1207,7 @@ lnet_router_checker(void *arg)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>version = the_lnet.ln_routers_version;<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>list_for_each_entry(rtr, &amp;the_lnet.ln_routers, lp_rtr_list) {<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>cpt2 = lnet_cpt_of_nid_locked(rtr-&gt;lp_nid);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>cpt2 = rtr-&gt;lp_cpt;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>if (cpt != cpt2) {<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>lnet_net_unlock(cpt);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>cpt = cpt2;<br class="">
@@ -1693,7 &#43;1693,7 @@ lnet_notify(struct lnet_ni *ni, lnet_nid_t nid, int alive, time64_t when)<br class="">
{<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>struct lnet_peer *lp = NULL;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>time64_t now = ktime_get_seconds();<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>int cpt = lnet_cpt_of_nid(nid);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>int cpt = lnet_cpt_of_nid(nid, ni);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>LASSERT(!in_interrupt());<br class="">
<br class="">
diff --git a/drivers/staging/lustre/lnet/selftest/brw_test.c b/drivers/staging/lustre/lnet/selftest/brw_test.c<br class="">
index f1ee219bc8f3..e372ff3044c8 100644<br class="">
--- a/drivers/staging/lustre/lnet/selftest/brw_test.c<br class="">
&#43;&#43;&#43; b/drivers/staging/lustre/lnet/selftest/brw_test.c<br class="">
@@ -124,7 &#43;124,7 @@ brw_client_init(struct sfw_test_instance *tsi)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>return -EINVAL;<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>list_for_each_entry(tsu, &amp;tsi-&gt;tsi_units, tsu_list) {<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>bulk = srpc_alloc_bulk(lnet_cpt_of_nid(tsu-&gt;tsu_dest.nid),<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>bulk = srpc_alloc_bulk(lnet_cpt_of_nid(tsu-&gt;tsu_dest.nid, NULL),<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;off, npg, len,
 opc == LST_BRW_READ);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>if (!bulk) {<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>brw_client_fini(tsi);<br class="">
diff --git a/drivers/staging/lustre/lnet/selftest/framework.c b/drivers/staging/lustre/lnet/selftest/framework.c<br class="">
index 944a2a6598fa..a82efc394659 100644<br class="">
--- a/drivers/staging/lustre/lnet/selftest/framework.c<br class="">
&#43;&#43;&#43; b/drivers/staging/lustre/lnet/selftest/framework.c<br class="">
@@ -1013,7 &#43;1013,8 @@ sfw_run_batch(struct sfw_batch *tsb)<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>tsu-&gt;tsu_loop = tsi-&gt;tsi_loop;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>wi = &amp;tsu-&gt;tsu_worker;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>swi_init_workitem(wi, sfw_run_test,<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>&nbsp;lst_test_wq[lnet_cpt_of_nid(tsu-&gt;tsu_dest.nid)]);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>&nbsp;lst_test_wq[lnet_cpt_of_nid(tsu-&gt;tsu_dest.nid,<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>&nbsp;NULL)]);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>swi_schedule_workitem(wi);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>}<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>}<br class="">
diff --git a/drivers/staging/lustre/lnet/selftest/selftest.h b/drivers/staging/lustre/lnet/selftest/selftest.h<br class="">
index 9dbb0a51d430..edf783af90e8 100644<br class="">
--- a/drivers/staging/lustre/lnet/selftest/selftest.h<br class="">
&#43;&#43;&#43; b/drivers/staging/lustre/lnet/selftest/selftest.h<br class="">
@@ -527,7 &#43;527,7 @@ srpc_init_client_rpc(struct srpc_client_rpc *rpc, struct lnet_process_id peer,<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>INIT_LIST_HEAD(&amp;rpc-&gt;crpc_list);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>swi_init_workitem(&amp;rpc-&gt;crpc_wi, srpc_send_rpc,<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>&nbsp;lst_test_wq[lnet_cpt_of_nid(peer.nid)]);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>&nbsp;lst_test_wq[lnet_cpt_of_nid(peer.nid, NULL)]);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>spin_lock_init(&amp;rpc-&gt;crpc_lock);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>atomic_set(&amp;rpc-&gt;crpc_refcount, 1); /* 1 ref for caller */<br class="">
<br class="">
<br class="">
<br class="">
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</body>
</html>