Whamcloud - gitweb
* Now handle portals pid correctly (To support catamount clients)
authorpjkirner <pjkirner>
Thu, 13 Oct 2005 15:53:56 +0000 (15:53 +0000)
committerpjkirner <pjkirner>
Thu, 13 Oct 2005 15:53:56 +0000 (15:53 +0000)
lnet/klnds/ptllnd/ptllnd.c
lnet/klnds/ptllnd/ptllnd.h
lnet/klnds/ptllnd/ptllnd_peer.c
lnet/klnds/ptllnd/ptllnd_rx_buf.c

index a2dec41..f4f07e2 100755 (executable)
@@ -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 "";
         }
index 0a847e9..30bb60e 100755 (executable)
@@ -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 *
index 2b35939..bd7f717 100644 (file)
@@ -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);
index 46531eb..9667615 100644 (file)
@@ -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",