From 6b94c7c7121b8817437051c9a5cda4b5bce7bea9 Mon Sep 17 00:00:00 2001 From: pjkirner Date: Thu, 13 Oct 2005 15:53:56 +0000 Subject: [PATCH] * Now handle portals pid correctly (To support catamount clients) --- lnet/klnds/ptllnd/ptllnd.c | 1 + lnet/klnds/ptllnd/ptllnd.h | 4 +++- lnet/klnds/ptllnd/ptllnd_peer.c | 19 +++++++++++-------- lnet/klnds/ptllnd/ptllnd_rx_buf.c | 3 ++- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/lnet/klnds/ptllnd/ptllnd.c b/lnet/klnds/ptllnd/ptllnd.c index a2dec41..f4f07e2 100755 --- a/lnet/klnds/ptllnd/ptllnd.c +++ b/lnet/klnds/ptllnd/ptllnd.c @@ -777,6 +777,7 @@ const char *get_msg_type_string(int type) DO_TYPE(PTLLND_MSG_TYPE_GET); DO_TYPE(PTLLND_MSG_TYPE_IMMEDIATE); DO_TYPE(PTLLND_MSG_TYPE_HELLO); + DO_TYPE(PTLLND_MSG_TYPE_NOOP); default: return ""; } diff --git a/lnet/klnds/ptllnd/ptllnd.h b/lnet/klnds/ptllnd/ptllnd.h index 0a847e9..30bb60e 100755 --- a/lnet/klnds/ptllnd/ptllnd.h +++ b/lnet/klnds/ptllnd/ptllnd.h @@ -249,6 +249,7 @@ struct kptl_peer struct list_head peer_active_txs; /* queue of activce txs */ int peer_active_txs_change_counter;/* updated when peer_active_txs changes*/ lnet_nid_t peer_nid; /* who's on the other end(s) */ + int peer_pid; /* the pid on the other end */ __u64 peer_incarnation; /* peer's incarnation */ __u64 peer_tx_seqnum; /* next seq# to send with*/ int peer_credits; /* number of send credits */ @@ -393,7 +394,7 @@ void kptllnd_eq_callback( int kptllnd_scheduler( void *arg); int kptllnd_watchdog( - void *arg); + void *arg); int kptllnd_thread_start( int (*fn)(void *arg), @@ -540,6 +541,7 @@ kptl_peer_t * kptllnd_peer_handle_hello ( kptl_data_t *kptllnd_data, lnet_nid_t nid, + int pid, kptl_msg_t *msg); static inline struct list_head * diff --git a/lnet/klnds/ptllnd/ptllnd_peer.c b/lnet/klnds/ptllnd/ptllnd_peer.c index 2b35939..bd7f717 100644 --- a/lnet/klnds/ptllnd/ptllnd_peer.c +++ b/lnet/klnds/ptllnd/ptllnd_peer.c @@ -73,12 +73,13 @@ int kptllnd_peer_allocate ( kptl_data_t *kptllnd_data, kptl_peer_t **peerp, - lnet_nid_t nid) + lnet_nid_t nid, + int pid) { kptl_peer_t *peer; int rc; - PJK_UT_MSG(">>> nid="LPX64"\n",nid); + PJK_UT_MSG(">>> nid="LPX64" pid=%d\n",nid,pid); LASSERT (nid != PTL_NID_ANY); @@ -99,6 +100,7 @@ kptllnd_peer_allocate ( peer->peer_state = PEER_STATE_ALLOCATED; peer->peer_kptllnd_data = kptllnd_data; peer->peer_nid = nid; + peer->peer_pid = pid; //peer->peer_incarnation = 0; //peer->peer_tx_seqnum = 0; @@ -619,7 +621,7 @@ kptllnd_peer_check_sends ( PJK_UT_MSG_DATA("--- TXTXTXTXTXTXTXTXTXTXTXTXTXTX\n"); PJK_UT_MSG_DATA("Sending TX=%p Size=%d\n",tx,tx->tx_msg->ptlm_nob); - PJK_UT_MSG_DATA("Target nid="LPX64"\n",peer->peer_nid); + PJK_UT_MSG_DATA("Target nid="LPX64" pid=%d\n",peer->peer_nid,peer->peer_pid); mdh = PTL_INVALID_HANDLE; mdh_msg =PTL_INVALID_HANDLE; @@ -702,14 +704,14 @@ kptllnd_peer_check_sends ( */ target.nid = lnet2ptlnid(kptllnd_data,peer->peer_nid); - target.pid = PTLLND_PID; + target.pid = peer->peer_pid; PJK_UT_MSG_DATA("Msg NOB = %d\n",tx->tx_msg->ptlm_nob); PJK_UT_MSG_DATA("Giving %d credits back to peer\n",tx->tx_msg->ptlm_credits); PJK_UT_MSG_DATA("Seq # = "LPX64"\n",tx->tx_msg->ptlm_seq); - PJK_UT_MSG("lnet TX nid=" LPX64 "\n",peer->peer_nid); - PJK_UT_MSG("ptl TX nid=" LPX64 "\n",target.nid); + PJK_UT_MSG("lnet TX nid=" LPX64 " pid=%d\n",peer->peer_nid,peer->peer_pid); + PJK_UT_MSG("ptl TX nid=" LPX64 " pid=%d\n",target.nid,target.pid); if(tx->tx_msg->ptlm_type == PTLLND_MSG_TYPE_GET || tx->tx_msg->ptlm_type == PTLLND_MSG_TYPE_PUT){ @@ -1055,6 +1057,7 @@ kptl_peer_t * kptllnd_peer_handle_hello ( kptl_data_t *kptllnd_data, lnet_nid_t nid, + int pid, kptl_msg_t *msg) { kptl_peer_t *peer = NULL; @@ -1104,7 +1107,7 @@ kptllnd_peer_handle_hello ( * however we want to avoid doing this while holidng * the peer_rw_lock and be forced into atomic context */ - rc = kptllnd_peer_allocate ( kptllnd_data, &peer_allocated, nid); + rc = kptllnd_peer_allocate ( kptllnd_data, &peer_allocated, nid, pid); if(rc != 0){ kptllnd_tx_decref(tx_hello); CERROR("Failed to create peer (nid="LPX64")\n",nid); @@ -1340,7 +1343,7 @@ kptllnd_tx_launch ( * (it's not active until its on the list) */ PJK_UT_MSG("TX %p creating NEW PEER nid="LPX64"\n",tx,target_nid); - rc = kptllnd_peer_allocate ( kptllnd_data, &peer_allocated, target_nid); + rc = kptllnd_peer_allocate ( kptllnd_data, &peer_allocated, target_nid, PTLLND_PID); if(rc != 0){ CERROR("Failed to create peer (nid="LPX64")\n",target_nid); kptllnd_tx_decref (tx); diff --git a/lnet/klnds/ptllnd/ptllnd_rx_buf.c b/lnet/klnds/ptllnd/ptllnd_rx_buf.c index 46531eb..9667615 100644 --- a/lnet/klnds/ptllnd/ptllnd_rx_buf.c +++ b/lnet/klnds/ptllnd/ptllnd_rx_buf.c @@ -651,13 +651,14 @@ kptllnd_rx_scheduler_handler(kptl_rx_t *rx) PJK_UT_MSG_DATA("Credits back from peer=%d\n",msg->ptlm_credits); PJK_UT_MSG_DATA("Seq # ="LPX64"\n",msg->ptlm_seq); PJK_UT_MSG_DATA("lnet RX nid=" LPX64 "\n",lnet_initiator_nid); - PJK_UT_MSG("ptl RX nid=" FMT_NID "\n",rx->rx_initiator.nid); + PJK_UT_MSG("ptl RX nid=" FMT_NID " pid=%d\n",rx->rx_initiator.nid,rx->rx_initiator.pid); if(type == PTLLND_MSG_TYPE_HELLO) { peer = kptllnd_peer_handle_hello( kptllnd_data, lnet_initiator_nid, + rx->rx_initiator.pid, msg); if( peer == NULL){ CERROR ("Failed to create peer for "LPX64"\n", -- 1.8.3.1