Whamcloud - gitweb
LU-8507 lnet: Enable setting per NI peer_credits
[fs/lustre-release.git] / lnet / lnet / config.c
index b00267d..93ab8ba 100644 (file)
@@ -35,6 +35,8 @@
  */
 
 #define DEBUG_SUBSYSTEM S_LNET
+#include <linux/nsproxy.h>
+#include <net/net_namespace.h>
 #include <lnet/lib-lnet.h>
 
 /* tmp struct for parsing routes */
@@ -108,11 +110,19 @@ lnet_ni_free(struct lnet_ni *ni)
        if (ni->ni_cpts != NULL)
                cfs_expr_list_values_free(ni->ni_cpts, ni->ni_ncpts);
 
+       if (ni->ni_lnd_tunables != NULL)
+               LIBCFS_FREE(ni->ni_lnd_tunables, sizeof(*ni->ni_lnd_tunables));
+
        for (i = 0; i < LNET_MAX_INTERFACES &&
                    ni->ni_interfaces[i] != NULL; i++) {
                LIBCFS_FREE(ni->ni_interfaces[i],
                            strlen(ni->ni_interfaces[i]) + 1);
        }
+
+       /* release reference to net namespace */
+       if (ni->ni_net_ns != NULL)
+               put_net(ni->ni_net_ns);
+
        LIBCFS_FREE(ni, sizeof(*ni));
 }
 
@@ -174,6 +184,13 @@ lnet_ni_alloc(__u32 net, struct cfs_expr_list *el, struct list_head *nilist)
 
        /* LND will fill in the address part of the NID */
        ni->ni_nid = LNET_MKNID(net, 0);
+
+       /* Store net namespace in which current ni is being created */
+       if (current->nsproxy->net_ns != NULL)
+               ni->ni_net_ns = get_net(current->nsproxy->net_ns);
+       else
+               ni->ni_net_ns = NULL;
+
        ni->ni_last_alive = cfs_time_current_sec();
        list_add_tail(&ni->ni_list, nilist);
        return ni;