Whamcloud - gitweb
LU-14660 lnet: Fix destination NID for discovery PUSH
[fs/lustre-release.git] / lnet / include / lnet / lib-types.h
index 010cf32..87867ad 100644 (file)
@@ -27,7 +27,6 @@
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
  *
  * lnet/include/lnet/lib-types.h
  *
@@ -46,6 +45,7 @@
 #include <linux/uio.h>
 #include <linux/semaphore.h>
 #include <linux/types.h>
+#include <linux/kref.h>
 
 #include <uapi/linux/lnet/lnet-dlc.h>
 #include <uapi/linux/lnet/lnetctl.h>
@@ -473,6 +473,13 @@ struct lnet_ni {
        /* Recovery state. Protected by lnet_ni_lock() */
        __u32                   ni_recovery_state;
 
+       /* When to send the next recovery ping */
+       time64_t                ni_next_ping;
+       /* How many pings sent during current recovery period did not receive
+        * a reply. NB: reset whenever _any_ message arrives on this NI
+        */
+       unsigned int            ni_ping_count;
+
        /* per NI LND tunables */
        struct lnet_lnd_tunables ni_lnd_tunables;
 
@@ -509,10 +516,9 @@ struct lnet_ni {
        __u32                   ni_sel_priority;
 
        /*
-        * equivalent interfaces to use
-        * This is an array because socklnd bonding can still be configured
+        * equivalent interface to use
         */
-       char                    *ni_interfaces[LNET_INTERFACES_NUM];
+       char                    *ni_interface;
        struct net              *ni_net_ns;     /* original net namespace */
 };
 
@@ -581,7 +587,7 @@ struct lnet_peer_ni {
        /* peer's NID */
        lnet_nid_t              lpni_nid;
        /* # refs */
-       atomic_t                lpni_refcount;
+       struct kref             lpni_kref;
        /* health value for the peer */
        atomic_t                lpni_healthv;
        /* recovery ping mdh */
@@ -646,6 +652,8 @@ struct lnet_peer {
 
        /* source NID to use during discovery */
        lnet_nid_t              lp_disc_src_nid;
+       /* destination NID to use during discovery */
+       lnet_nid_t              lp_disc_dst_nid;
 
        /* net to perform discovery on */
        __u32                   lp_disc_net_id;
@@ -804,8 +812,8 @@ struct lnet_peer_net {
        /* peer net health */
        int                     lpn_healthv;
 
-       /* time of last router net check attempt */
-       time64_t                lpn_rtrcheck_timestamp;
+       /* time of next router ping on this net */
+       time64_t                lpn_next_ping;
 
        /* selection sequence number */
        __u32                   lpn_seq;
@@ -862,7 +870,7 @@ struct lnet_route {
        int                     lr_seq;         /* sequence for round-robin */
        __u32                   lr_hops;        /* how far I am */
        unsigned int            lr_priority;    /* route priority */
-       bool                    lr_alive;       /* cached route aliveness */
+       atomic_t                lr_alive;       /* cached route aliveness */
        bool                    lr_single_hop;  /* this route is single-hop */
 };