<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>
<blockquote type="cite" class="">
<div class="">On Jul 24, 2018, at 4:07 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="">Use dev_get_by_name() and for_primary_ifa() to<br class="">
get IP address for a named device. &nbsp;This is more<br class="">
direct.<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/lnet/klnds/o2iblnd/o2iblnd.c &nbsp;&nbsp;&nbsp;| &nbsp;&nbsp;48 &#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;-------<br class="">
1 file changed, 30 insertions(&#43;), 18 deletions(-)<br class="">
<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 9f3fef5da38c..05835cc0f0a5 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="">
@@ -38,6 &#43;38,7 @@<br class="">
#include &lt;asm/div64.h&gt;<br class="">
#include &lt;asm/page.h&gt;<br class="">
#include &quot;o2iblnd.h&quot;<br class="">
&#43;#include &lt;linux/inetdevice.h&gt;<br class="">
<br class="">
static struct lnet_lnd the_o2iblnd;<br class="">
<br class="">
@@ -2450,40 &#43;2451,48 @@ void kiblnd_destroy_dev(struct kib_dev *dev)<br class="">
static struct kib_dev *kiblnd_create_dev(char *ifname)<br class="">
{<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>struct net_device *netdev;<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>struct in_device *in_dev;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>struct kib_dev *dev;<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>__u32 netmask;<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>__u32 ip;<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>int up;<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>int flags;<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>int rc;<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>rc = lnet_ipif_query(ifname, &amp;up, &amp;ip, &amp;netmask);<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>if (rc) {<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>CERROR(&quot;Can't query IPoIB interface %s: %d\n&quot;,<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;&nbsp;&nbsp;ifname, rc);<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="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>rtnl_lock();<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>netdev = dev_get_by_name(&amp;init_net, ifname);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>if (!netdev) {<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>CERROR(&quot;Can't find IPoIB interface %s\n&quot;,<br class="">
&#43;<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;ifname);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>goto unlock;<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>if (!up) {<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>flags = dev_get_flags(netdev);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>if (!(flags &amp; IFF_UP)) {<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span><span class="Apple-tab-span" style="white-space:pre"></span>CERROR(&quot;Can't query IPoIB interface %s: it's down\n&quot;, ifname);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>rtnl_unlock();<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="">
<span class="Apple-tab-span" style="white-space:pre"></span>}<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>dev = kzalloc(sizeof(*dev), GFP_NOFS);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>if (!dev)<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="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>goto unlock;<br class="">
<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>netdev = dev_get_by_name(&amp;init_net, ifname);<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>if (!netdev) {<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>dev-&gt;ibd_can_failover = 0;<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>} else {<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>dev-&gt;ibd_can_failover = !!(netdev-&gt;flags &amp; IFF_MASTER);<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>dev_put(netdev);<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>}<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>dev-&gt;ibd_can_failover = !!(flags &amp; IFF_MASTER);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>INIT_LIST_HEAD(&amp;dev-&gt;ibd_nets);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>INIT_LIST_HEAD(&amp;dev-&gt;ibd_list); /* not yet in kib_devs */<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>INIT_LIST_HEAD(&amp;dev-&gt;ibd_fail_list);<br class="">
-<span class="Apple-tab-span" style="white-space:pre"> </span>dev-&gt;ibd_ifip = ip;<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>for_primary_ifa(in_dev)<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>if (strcmp(ifa-&gt;ifa_label, ifname) == 0) {<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>dev-&gt;ibd_ifip = ifa-&gt;ifa_local;<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>break;<br class="">
&#43;<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>endfor_ifa(in_dev);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>rtnl_unlock();<br class="">
&#43;<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>if (dev-&gt;ibd_ifip == 0) {<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>CERROR(&quot;Can't initialize device: no IP address\n&quot;);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>kfree(dev);<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre"></span>return NULL;<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>}<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>strcpy(&amp;dev-&gt;ibd_ifname[0], ifname);<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>/* initialize the device */<br class="">
@@ -2496,6 &#43;2505,9 @@ static struct kib_dev *kiblnd_create_dev(char *ifname)<br class="">
<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>list_add_tail(&amp;dev-&gt;ibd_list, &amp;kiblnd_data.kib_devs);<br class="">
<span class="Apple-tab-span" style="white-space:pre"></span>return dev;<br class="">
&#43;unlock:<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>rtnl_unlock();<br class="">
&#43;<span class="Apple-tab-span" style="white-space:pre"> </span>return NULL;<br class="">
}<br class="">
<br class="">
static void kiblnd_base_shutdown(void)<br class="">
<br class="">
<br class="">
_______________________________________________<br class="">
lustre-devel mailing list<br class="">
<a href="mailto:lustre-devel@lists.lustre.org" class="">lustre-devel@lists.lustre.org</a><br class="">
http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org<br class="">
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</body>
</html>