From 247c9e459331009bf76316018dbc6ff23923f17c Mon Sep 17 00:00:00 2001
From: eeb <eeb>
Date: Sat, 7 Feb 2004 11:44:41 +0000
Subject: [PATCH] *  Fixed 2634 ("instant" socknal timeout?)

*  Fixed 2684 ("static declaration of ep_nmd_merge...)
---
 lnet/klnds/qswlnd/qswlnd.h             | 37 +++-----------------------
 lnet/klnds/socklnd/socklnd.c           |  4 +++
 lustre/portals/knals/qswnal/qswnal.h   | 37 +++-----------------------
 lustre/portals/knals/socknal/socknal.c |  4 +++
 4 files changed, 14 insertions(+), 68 deletions(-)

diff --git a/lnet/klnds/qswlnd/qswlnd.h b/lnet/klnds/qswlnd/qswlnd.h
index a5d512465e..b1b9a45087 100644
--- a/lnet/klnds/qswlnd/qswlnd.h
+++ b/lnet/klnds/qswlnd/qswlnd.h
@@ -311,40 +311,9 @@ static inline void kqswnal_rx_done (kqswnal_rx_t *krx)
 }
 
 #if MULTIRAIL_EKC
-
-#ifndef EP_RAILMASK_ALL
-# error "old (unsupported) version of EKC headers"
-#endif
-
-static inline int
-ep_nmd_merge (EP_NMD *merged, EP_NMD *a, EP_NMD *b)
-{
-        if (EP_NMD_NODEID(a) != EP_NMD_NODEID(b)) /* not generated on the same node */
-                return 0;
-
-        if ((EP_NMD_RAILMASK(a) & EP_NMD_RAILMASK(b)) == 0) /* no common rails */
-                return 0;
-
-        if (b->nmd_addr == (a->nmd_addr + a->nmd_len)) {
-                if (merged != NULL) {
-                        merged->nmd_addr = a->nmd_addr;
-                        merged->nmd_len  = a->nmd_len + b->nmd_len;
-                        merged->nmd_attr = EP_NMD_ATTR(EP_NMD_NODEID(a), EP_NMD_RAILMASK(a) & EP_NMD_RAILMASK(b));
-                }
-                return 1;
-        }
-    
-        if (a->nmd_addr == (b->nmd_addr + b->nmd_len)) {
-                if (merged != NULL) {
-                        merged->nmd_addr = b->nmd_addr;
-                        merged->nmd_len   = b->nmd_len + a->nmd_len;
-                        merged->nmd_attr  = EP_NMD_ATTR(EP_NMD_NODEID(b), EP_NMD_RAILMASK(a) & EP_NMD_RAILMASK(b));
-                }
-                return 1;
-        }
-
-        return 0;
-}
+# ifndef EP_RAILMASK_ALL
+#  error "old (unsupported) version of EKC headers"
+# endif
 #else
 /* multirail defines these in <elan/epcomms.h> */
 #define EP_MSG_SVC_PORTALS_SMALL      (0x10)  /* Portals over elan port number (large payloads) */
diff --git a/lnet/klnds/socklnd/socklnd.c b/lnet/klnds/socklnd/socklnd.c
index 49956a23de..d996341fd0 100644
--- a/lnet/klnds/socklnd/socklnd.c
+++ b/lnet/klnds/socklnd/socklnd.c
@@ -796,6 +796,10 @@ ksocknal_create_conn (ksock_route_t *route, struct socket *sock,
         peer->ksnp_last_alive = jiffies;
         peer->ksnp_error = 0;
 
+        /* Set the deadline for the outgoing HELLO to drain */
+        conn->ksnc_tx_deadline = jiffies + 
+                                 ksocknal_data.ksnd_io_timeout * HZ;
+
         list_add (&conn->ksnc_list, &peer->ksnp_conns);
         atomic_inc (&conn->ksnc_refcount);
 
diff --git a/lustre/portals/knals/qswnal/qswnal.h b/lustre/portals/knals/qswnal/qswnal.h
index a5d512465e..b1b9a45087 100644
--- a/lustre/portals/knals/qswnal/qswnal.h
+++ b/lustre/portals/knals/qswnal/qswnal.h
@@ -311,40 +311,9 @@ static inline void kqswnal_rx_done (kqswnal_rx_t *krx)
 }
 
 #if MULTIRAIL_EKC
-
-#ifndef EP_RAILMASK_ALL
-# error "old (unsupported) version of EKC headers"
-#endif
-
-static inline int
-ep_nmd_merge (EP_NMD *merged, EP_NMD *a, EP_NMD *b)
-{
-        if (EP_NMD_NODEID(a) != EP_NMD_NODEID(b)) /* not generated on the same node */
-                return 0;
-
-        if ((EP_NMD_RAILMASK(a) & EP_NMD_RAILMASK(b)) == 0) /* no common rails */
-                return 0;
-
-        if (b->nmd_addr == (a->nmd_addr + a->nmd_len)) {
-                if (merged != NULL) {
-                        merged->nmd_addr = a->nmd_addr;
-                        merged->nmd_len  = a->nmd_len + b->nmd_len;
-                        merged->nmd_attr = EP_NMD_ATTR(EP_NMD_NODEID(a), EP_NMD_RAILMASK(a) & EP_NMD_RAILMASK(b));
-                }
-                return 1;
-        }
-    
-        if (a->nmd_addr == (b->nmd_addr + b->nmd_len)) {
-                if (merged != NULL) {
-                        merged->nmd_addr = b->nmd_addr;
-                        merged->nmd_len   = b->nmd_len + a->nmd_len;
-                        merged->nmd_attr  = EP_NMD_ATTR(EP_NMD_NODEID(b), EP_NMD_RAILMASK(a) & EP_NMD_RAILMASK(b));
-                }
-                return 1;
-        }
-
-        return 0;
-}
+# ifndef EP_RAILMASK_ALL
+#  error "old (unsupported) version of EKC headers"
+# endif
 #else
 /* multirail defines these in <elan/epcomms.h> */
 #define EP_MSG_SVC_PORTALS_SMALL      (0x10)  /* Portals over elan port number (large payloads) */
diff --git a/lustre/portals/knals/socknal/socknal.c b/lustre/portals/knals/socknal/socknal.c
index 49956a23de..d996341fd0 100644
--- a/lustre/portals/knals/socknal/socknal.c
+++ b/lustre/portals/knals/socknal/socknal.c
@@ -796,6 +796,10 @@ ksocknal_create_conn (ksock_route_t *route, struct socket *sock,
         peer->ksnp_last_alive = jiffies;
         peer->ksnp_error = 0;
 
+        /* Set the deadline for the outgoing HELLO to drain */
+        conn->ksnc_tx_deadline = jiffies + 
+                                 ksocknal_data.ksnd_io_timeout * HZ;
+
         list_add (&conn->ksnc_list, &peer->ksnp_conns);
         atomic_inc (&conn->ksnc_refcount);
 
-- 
GitLab