From 247c9e459331009bf76316018dbc6ff23923f17c Mon Sep 17 00:00:00 2001 From: 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 a5d5124..b1b9a45 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 */ #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 49956a2..d996341 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 a5d5124..b1b9a45 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 */ #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 49956a2..d996341 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); -- 1.8.3.1