Whamcloud - gitweb
LU-10391 lnet: extend nids in struct lnet_msg 98/43598/13
authorMr NeilBrown <neilb@suse.de>
Fri, 7 Jan 2022 01:07:45 +0000 (20:07 -0500)
committerOleg Drokin <green@whamcloud.com>
Tue, 18 Jan 2022 09:08:16 +0000 (09:08 +0000)
struct lnet_msg contains 3 nids and one process_id (which itself
contains a nid.  Replace each of these with the 'struct lnet_nid'
version.

Test-Parameters: trivial
Test-Parameters: serverversion=2.12 serverdistro=el7.9 testlist=runtests
Test-Parameters: clientversion=2.12 testlist=runtests
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: Ic6233d36bafda364894d89b2e2b055538a6033f5
Reviewed-on: https://review.whamcloud.com/43598
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Alexey Lyashkov <alexey.lyashkov@hpe.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lnet/include/lnet/lib-lnet.h
lnet/include/lnet/lib-types.h
lnet/klnds/gnilnd/gnilnd.h
lnet/klnds/gnilnd/gnilnd_cb.c
lnet/klnds/o2iblnd/o2iblnd_cb.c
lnet/klnds/socklnd/socklnd_cb.c
lnet/lnet/lib-move.c
lnet/lnet/lib-msg.c
lnet/lnet/lib-ptl.c
lnet/lnet/peer.c

index f195303..7e13c1b 100644 (file)
@@ -922,7 +922,7 @@ struct lnet_peer_ni *lnet_find_peer_ni_locked(lnet_nid_t nid);
 struct lnet_peer_ni *lnet_peer_ni_find_locked(struct lnet_nid *nid);
 struct lnet_peer *lnet_find_peer(lnet_nid_t nid);
 void lnet_peer_net_added(struct lnet_net *net);
-lnet_nid_t lnet_peer_primary_nid_locked(lnet_nid_t nid);
+void lnet_peer_primary_nid_locked(lnet_nid_t nid, struct lnet_nid *result);
 int lnet_discover_peer_locked(struct lnet_peer_ni *lpni, int cpt, bool block);
 void lnet_peer_queue_message(struct lnet_peer *lp, struct lnet_msg *msg);
 int lnet_peer_discovery_start(void);
index 1d8917b..8f53d63 100644 (file)
@@ -117,19 +117,19 @@ struct lnet_msg {
        struct list_head        msg_activelist;
        struct list_head        msg_list;       /* Q for credits/MD */
 
-       struct lnet_process_id  msg_target;
+       struct lnet_processid   msg_target;
        /* Primary NID of the source. */
-       lnet_nid_t              msg_initiator;
+       struct lnet_nid         msg_initiator;
        /* where is it from, it's only for building event */
-       lnet_nid_t              msg_from;
+       struct lnet_nid         msg_from;
        __u32                   msg_type;
 
        /*
         * hold parameters in case message is with held due
         * to discovery
         */
-       lnet_nid_t              msg_src_nid_param;
-       lnet_nid_t              msg_rtr_nid_param;
+       struct lnet_nid         msg_src_nid_param;
+       struct lnet_nid         msg_rtr_nid_param;
 
        /*
         * Deadline for the message after which it will be finalized if it
index f307b79..f7359a4 100644 (file)
@@ -1818,7 +1818,8 @@ int kgnilnd_del_conn_or_peer(kgn_net_t *net, lnet_nid_t nid, int command, int er
 void kgnilnd_peer_increase_reconnect_locked(kgn_peer_t *peer);
 void kgnilnd_queue_reply(kgn_conn_t *conn, kgn_tx_t *tx);
 void kgnilnd_queue_tx(kgn_conn_t *conn, kgn_tx_t *tx);
-void kgnilnd_launch_tx(kgn_tx_t *tx, kgn_net_t *net, struct lnet_process_id *target);
+void kgnilnd_launch_tx(kgn_tx_t *tx, kgn_net_t *net,
+                      struct lnet_processid *target);
 int kgnilnd_send_mapped_tx(kgn_tx_t *tx, int try_map_if_full);
 void kgnilnd_consume_rx(kgn_rx_t *rx);
 
index a012a76..ad314de 100644 (file)
@@ -1676,7 +1676,7 @@ kgnilnd_queue_tx(kgn_conn_t *conn, kgn_tx_t *tx)
 }
 
 void
-kgnilnd_launch_tx(kgn_tx_t *tx, kgn_net_t *net, struct lnet_process_id *target)
+kgnilnd_launch_tx(kgn_tx_t *tx, kgn_net_t *net, struct lnet_processid *target)
 {
        kgn_peer_t      *peer;
        kgn_peer_t      *new_peer = NULL;
@@ -1699,7 +1699,7 @@ kgnilnd_launch_tx(kgn_tx_t *tx, kgn_net_t *net, struct lnet_process_id *target)
        /* I expect to find him, so only take a read lock */
        read_lock(&kgnilnd_data.kgn_peer_conn_lock);
 
-       peer = kgnilnd_find_peer_locked(target->nid);
+       peer = kgnilnd_find_peer_locked(lnet_nid_to_nid4(&target->nid));
        if (peer != NULL) {
                conn = kgnilnd_find_conn_locked(peer);
                /* this could be NULL during quiesce */
@@ -1723,7 +1723,7 @@ kgnilnd_launch_tx(kgn_tx_t *tx, kgn_net_t *net, struct lnet_process_id *target)
 
        CFS_RACE(CFS_FAIL_GNI_FIND_TARGET);
 
-       node_state = kgnilnd_get_node_state(LNET_NIDADDR(target->nid));
+       node_state = kgnilnd_get_node_state(ntohl(target->nid->nid_addr[0]));
 
        /* NB - this will not block during normal operations -
         * the only writer of this is in the startup/shutdown path. */
@@ -1736,7 +1736,8 @@ kgnilnd_launch_tx(kgn_tx_t *tx, kgn_net_t *net, struct lnet_process_id *target)
        /* ignore previous peer entirely - we cycled the lock, so we
         * will create new peer and at worst drop it if peer is still
         * in the tables */
-       rc = kgnilnd_create_peer_safe(&new_peer, target->nid, net, node_state);
+       rc = kgnilnd_create_peer_safe(&new_peer, lnet_nid_to_nid4(&target->nid),
+                                     net, node_state);
        if (rc != 0) {
                up_read(&kgnilnd_data.kgn_net_rw_sem);
                GOTO(no_peer, rc);
@@ -1747,7 +1748,8 @@ kgnilnd_launch_tx(kgn_tx_t *tx, kgn_net_t *net, struct lnet_process_id *target)
 
        /* search for peer again now that we have the lock
         * if we don't find it, add our new one to the list */
-       kgnilnd_add_peer_locked(target->nid, new_peer, &peer);
+       kgnilnd_add_peer_locked(lnet_nid_to_nid4(&target->nid), new_peer,
+                               &peer);
 
        /* don't create a connection if the peer is not up */
        if (peer->gnp_state != GNILND_PEER_UP) {
@@ -2017,7 +2019,7 @@ kgnilnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
 {
        struct lnet_hdr  *hdr = &lntmsg->msg_hdr;
        int               type = lntmsg->msg_type;
-       struct lnet_process_id target = lntmsg->msg_target;
+       struct lnet_processid *target = &lntmsg->msg_target;
        int               target_is_router = lntmsg->msg_target_is_router;
        int               routing = lntmsg->msg_routing;
        unsigned int      niov = lntmsg->msg_niov;
@@ -2036,7 +2038,7 @@ kgnilnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
        LASSERT(!in_interrupt());
 
        CDEBUG(D_NET, "sending msg type %d with %d bytes in %d frags to %s\n",
-              type, nob, niov, libcfs_id2str(target));
+              type, nob, niov, libcfs_idstr(target));
 
        LASSERTF(nob == 0 || niov > 0,
                "lntmsg %p nob %d niov %d\n", lntmsg, nob, niov);
@@ -2097,7 +2099,7 @@ kgnilnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
                tx->tx_lntmsg[1] = lnet_create_reply_msg(ni, lntmsg);
                if (tx->tx_lntmsg[1] == NULL) {
                        CERROR("Can't create reply for GET to %s\n",
-                              libcfs_nid2str(target.nid));
+                              libcfs_nidstr(&target->nid));
                        kgnilnd_tx_done(tx, rc);
                        rc = -EIO;
                        goto out;
@@ -2110,7 +2112,7 @@ kgnilnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
                        tx->tx_msg.gnm_u.putreq.gnprm_hdr = *hdr;
 
                /* rest of tx_msg is setup just before it is sent */
-               kgnilnd_launch_tx(tx, net, &target);
+               kgnilnd_launch_tx(tx, net, target);
                goto out;
        case LNET_MSG_REPLY:
        case LNET_MSG_PUT:
@@ -2146,7 +2148,7 @@ kgnilnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
                        tx->tx_msg.gnm_u.get.gngm_hdr = *hdr;
 
                /* rest of tx_msg is setup just before it is sent */
-               kgnilnd_launch_tx(tx, net, &target);
+               kgnilnd_launch_tx(tx, net, target);
                goto out;
        }
 
@@ -2170,7 +2172,7 @@ kgnilnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
 
        tx->tx_msg.gnm_u.immediate.gnim_hdr = *hdr;
        tx->tx_lntmsg[0] = lntmsg;
-       kgnilnd_launch_tx(tx, net, &target);
+       kgnilnd_launch_tx(tx, net, target);
 
 out:
        /* use stored value as we could have already finalized lntmsg here from a failed launch */
index 932e06a..2349a62 100644 (file)
@@ -1620,7 +1620,7 @@ kiblnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
 {
        struct lnet_hdr *hdr = &lntmsg->msg_hdr;
        int               type = lntmsg->msg_type;
-       struct lnet_process_id target = lntmsg->msg_target;
+       struct lnet_processid *target = &lntmsg->msg_target;
        int               target_is_router = lntmsg->msg_target_is_router;
        int               routing = lntmsg->msg_routing;
        unsigned int      payload_niov = lntmsg->msg_niov;
@@ -1633,10 +1633,10 @@ kiblnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
        int               nob;
        int               rc;
 
-        /* NB 'private' is different depending on what we're sending.... */
+       /* NB 'private' is different depending on what we're sending.... */
 
-        CDEBUG(D_NET, "sending %d bytes in %d frags to %s\n",
-               payload_nob, payload_niov, libcfs_id2str(target));
+       CDEBUG(D_NET, "sending %d bytes in %d frags to %s\n",
+              payload_nob, payload_niov, libcfs_idstr(target));
 
        LASSERT (payload_nob == 0 || payload_niov > 0);
        LASSERT (payload_niov <= LNET_MAX_IOV);
@@ -1644,11 +1644,11 @@ kiblnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
        /* Thread context */
        LASSERT (!in_interrupt());
 
-       tx = kiblnd_get_idle_tx(ni, target.nid);
+       tx = kiblnd_get_idle_tx(ni, lnet_nid_to_nid4(&target->nid));
        if (tx == NULL) {
                CERROR("Can't allocate %s txd for %s\n",
                        lnet_msgtyp2str(type),
-                       libcfs_nid2str(target.nid));
+                       libcfs_nidstr(&target->nid));
                return -ENOMEM;
        }
        ibmsg = tx->tx_msg;
@@ -1678,7 +1678,7 @@ kiblnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
                                          0, lntmsg->msg_md->md_length);
                if (rc != 0) {
                        CERROR("Can't setup GET sink for %s: %d\n",
-                              libcfs_nid2str(target.nid), rc);
+                              libcfs_nidstr(&target->nid), rc);
                        tx->tx_hstatus = LNET_MSG_STATUS_LOCAL_ERROR;
                        kiblnd_tx_done(tx);
                        return -EIO;
@@ -1693,7 +1693,7 @@ kiblnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
                 tx->tx_lntmsg[1] = lnet_create_reply_msg(ni, lntmsg);
                if (tx->tx_lntmsg[1] == NULL) {
                        CERROR("Can't create reply for GET -> %s\n",
-                              libcfs_nid2str(target.nid));
+                              libcfs_nidstr(&target->nid));
                        kiblnd_tx_done(tx);
                        return -EIO;
                }
@@ -1701,7 +1701,7 @@ kiblnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
                /* finalise lntmsg[0,1] on completion */
                tx->tx_lntmsg[0] = lntmsg;
                tx->tx_waiting = 1;             /* waiting for GET_DONE */
-               kiblnd_launch_tx(ni, tx, target.nid);
+               kiblnd_launch_tx(ni, tx, lnet_nid_to_nid4(&target->nid));
                return 0;
 
        case LNET_MSG_REPLY:
@@ -1716,7 +1716,7 @@ kiblnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
                                          payload_offset, payload_nob);
                if (rc != 0) {
                        CERROR("Can't setup PUT src for %s: %d\n",
-                              libcfs_nid2str(target.nid), rc);
+                              libcfs_nidstr(&target->nid), rc);
                        kiblnd_tx_done(tx);
                        return -EIO;
                }
@@ -1729,7 +1729,7 @@ kiblnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
                /* finalise lntmsg[0,1] on completion */
                tx->tx_lntmsg[0] = lntmsg;
                tx->tx_waiting = 1;             /* waiting for PUT_{ACK,NAK} */
-               kiblnd_launch_tx(ni, tx, target.nid);
+               kiblnd_launch_tx(ni, tx, lnet_nid_to_nid4(&target->nid));
                return 0;
        }
 
@@ -1753,14 +1753,14 @@ kiblnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
        /* finalise lntmsg on completion */
        tx->tx_lntmsg[0] = lntmsg;
 
-       kiblnd_launch_tx(ni, tx, target.nid);
+       kiblnd_launch_tx(ni, tx, lnet_nid_to_nid4(&target->nid));
        return 0;
 }
 
 static void
 kiblnd_reply(struct lnet_ni *ni, struct kib_rx *rx, struct lnet_msg *lntmsg)
 {
-       struct lnet_process_id target = lntmsg->msg_target;
+       struct lnet_processid *target = &lntmsg->msg_target;
        unsigned int niov = lntmsg->msg_niov;
        struct bio_vec *kiov = lntmsg->msg_kiov;
        unsigned int offset = lntmsg->msg_offset;
@@ -1769,33 +1769,33 @@ kiblnd_reply(struct lnet_ni *ni, struct kib_rx *rx, struct lnet_msg *lntmsg)
        int rc;
 
        tx = kiblnd_get_idle_tx(ni, rx->rx_conn->ibc_peer->ibp_nid);
-        if (tx == NULL) {
-                CERROR("Can't get tx for REPLY to %s\n",
-                       libcfs_nid2str(target.nid));
-                goto failed_0;
-        }
+       if (tx == NULL) {
+               CERROR("Can't get tx for REPLY to %s\n",
+                      libcfs_nidstr(&target->nid));
+               goto failed_0;
+       }
 
-        if (nob == 0)
-                rc = 0;
-        else
-                rc = kiblnd_setup_rd_kiov(ni, tx, tx->tx_rd,
-                                          niov, kiov, offset, nob);
+       if (nob == 0)
+               rc = 0;
+       else
+               rc = kiblnd_setup_rd_kiov(ni, tx, tx->tx_rd,
+                                         niov, kiov, offset, nob);
 
-        if (rc != 0) {
-                CERROR("Can't setup GET src for %s: %d\n",
-                       libcfs_nid2str(target.nid), rc);
-                goto failed_1;
-        }
+       if (rc != 0) {
+               CERROR("Can't setup GET src for %s: %d\n",
+                      libcfs_nidstr(&target->nid), rc);
+               goto failed_1;
+       }
 
-        rc = kiblnd_init_rdma(rx->rx_conn, tx,
-                              IBLND_MSG_GET_DONE, nob,
-                              &rx->rx_msg->ibm_u.get.ibgm_rd,
-                              rx->rx_msg->ibm_u.get.ibgm_cookie);
-        if (rc < 0) {
-                CERROR("Can't setup rdma for GET from %s: %d\n",
-                       libcfs_nid2str(target.nid), rc);
-                goto failed_1;
-        }
+       rc = kiblnd_init_rdma(rx->rx_conn, tx,
+                             IBLND_MSG_GET_DONE, nob,
+                             &rx->rx_msg->ibm_u.get.ibgm_rd,
+                             rx->rx_msg->ibm_u.get.ibgm_cookie);
+       if (rc < 0) {
+               CERROR("Can't setup rdma for GET from %s: %d\n",
+                      libcfs_nidstr(&target->nid), rc);
+               goto failed_1;
+       }
 
        if (nob == 0) {
                /* No RDMA: local completion may happen now! */
index 614b864..558a24d 100644 (file)
@@ -982,7 +982,7 @@ ksocknal_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
        /* '1' for consistency with code that checks !mpflag to restore */
        unsigned int mpflag = 1;
        int type = lntmsg->msg_type;
-       struct lnet_processid target;
+       struct lnet_processid *target = &lntmsg->msg_target;
        unsigned int payload_niov = lntmsg->msg_niov;
        struct bio_vec *payload_kiov = lntmsg->msg_kiov;
        unsigned int payload_offset = lntmsg->msg_offset;
@@ -994,11 +994,9 @@ ksocknal_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
        /* NB 'private' is different depending on what we're sending.
         * Just ignore it...
         */
-       target.pid = lntmsg->msg_target.pid;
-       lnet_nid4_to_nid(lntmsg->msg_target.nid, &target.nid);
 
        CDEBUG(D_NET, "sending %u bytes in %d frags to %s\n",
-              payload_nob, payload_niov, libcfs_idstr(&target));
+              payload_nob, payload_niov, libcfs_idstr(target));
 
        LASSERT (payload_nob == 0 || payload_niov > 0);
        LASSERT (payload_niov <= LNET_MAX_IOV);
@@ -1037,7 +1035,7 @@ ksocknal_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
        tx->tx_msg.ksm_zc_cookies[1] = 0;
 
        /* The first fragment will be set later in pro_pack */
-       rc = ksocknal_launch_packet(ni, tx, &target);
+       rc = ksocknal_launch_packet(ni, tx, target);
        /*
         * We can't test lntsmg->msg_vmflush again as lntmsg may
         * have been freed.
index 73e9e25..e48f2ae 100644 (file)
@@ -713,7 +713,8 @@ lnet_prep_send(struct lnet_msg *msg, int type, struct lnet_process_id target,
               unsigned int offset, unsigned int len)
 {
        msg->msg_type = type;
-       msg->msg_target = target;
+       msg->msg_target.pid = target.pid;
+       lnet_nid4_to_nid(target.nid, &msg->msg_target.nid);
        msg->msg_len = len;
        msg->msg_offset = offset;
 
@@ -764,7 +765,7 @@ lnet_ni_eager_recv(struct lnet_ni *ni, struct lnet_msg *msg)
                CERROR("recv from %s / send to %s aborted: "
                       "eager_recv failed %d\n",
                       libcfs_nidstr(&msg->msg_rxpeer->lpni_nid),
-                      libcfs_id2str(msg->msg_target), rc);
+                      libcfs_idstr(&msg->msg_target), rc);
                LASSERT(rc < 0); /* required by my callers */
        }
 
@@ -866,7 +867,7 @@ lnet_post_send_locked(struct lnet_msg *msg, int do_send)
                                        LNET_STATS_TYPE_DROP);
 
                CNETERR("Dropping message for %s: peer not alive\n",
-                       libcfs_id2str(msg->msg_target));
+                       libcfs_idstr(&msg->msg_target));
                msg->msg_health_status = LNET_MSG_STATUS_REMOTE_DROPPED;
                if (do_send)
                        lnet_finalize(msg, -EHOSTUNREACH);
@@ -881,11 +882,11 @@ lnet_post_send_locked(struct lnet_msg *msg, int do_send)
 
                CNETERR("Aborting message for %s: LNetM[DE]Unlink() already "
                        "called on the MD/ME.\n",
-                       libcfs_id2str(msg->msg_target));
+                       libcfs_idstr(&msg->msg_target));
                if (do_send) {
                        msg->msg_no_resend = true;
                        CDEBUG(D_NET, "msg %p to %s canceled and will not be resent\n",
-                              msg, libcfs_id2str(msg->msg_target));
+                              msg, libcfs_idstr(&msg->msg_target));
                        lnet_finalize(msg, -ECANCELED);
                }
 
@@ -1816,7 +1817,7 @@ lnet_handle_lo_send(struct lnet_send_data *sd)
        if (!msg->msg_routing)
                msg->msg_hdr.src_nid =
                        cpu_to_le64(lnet_nid_to_nid4(&the_lnet.ln_loni->ni_nid));
-       msg->msg_target.nid = lnet_nid_to_nid4(&the_lnet.ln_loni->ni_nid);
+       msg->msg_target.nid = the_lnet.ln_loni->ni_nid;
        lnet_msg_commit(msg, cpt);
        msg->msg_txni = the_lnet.ln_loni;
 
@@ -1901,8 +1902,7 @@ lnet_handle_send(struct lnet_send_data *sd)
         * what was originally set in the target or it will be the NID of
         * a router if this message should be routed
         */
-       /* FIXME handle large-addr nids */
-       msg->msg_target.nid = lnet_nid_to_nid4(&msg->msg_txpeer->lpni_nid);
+       msg->msg_target.nid = msg->msg_txpeer->lpni_nid;
 
        /*
         * lnet_msg_commit assigns the correct cpt to the message, which
@@ -2972,8 +2972,8 @@ again:
         * continuing the same sequence of messages. Similarly, rtr_nid will
         * affect our choice of next hop.
         */
-       msg->msg_src_nid_param = src_nid;
-       msg->msg_rtr_nid_param = rtr_nid;
+       lnet_nid4_to_nid(src_nid, &msg->msg_src_nid_param);
+       lnet_nid4_to_nid(rtr_nid, &msg->msg_rtr_nid_param);
 
        /*
         * If necessary, perform discovery on the peer that owns this peer_ni.
@@ -3092,8 +3092,8 @@ again:
 int
 lnet_send(lnet_nid_t src_nid, struct lnet_msg *msg, lnet_nid_t rtr_nid)
 {
-       lnet_nid_t              dst_nid = msg->msg_target.nid;
-       int                     rc;
+       lnet_nid_t dst_nid = lnet_nid_to_nid4(&msg->msg_target.nid);
+       int rc;
 
        /*
         * NB: rtr_nid is set to LNET_NID_ANY for all current use-cases,
@@ -3357,17 +3357,18 @@ lnet_resend_pending_msgs_locked(struct list_head *resendq, int cpt)
 
                        lnet_net_unlock(cpt);
                        CDEBUG(D_NET, "resending %s->%s: %s recovery %d try# %d\n",
-                              libcfs_nid2str(msg->msg_src_nid_param),
-                              libcfs_id2str(msg->msg_target),
+                              libcfs_nidstr(&msg->msg_src_nid_param),
+                              libcfs_idstr(&msg->msg_target),
                               lnet_msgtyp2str(msg->msg_type),
                               msg->msg_recovery,
                               msg->msg_retry_count);
-                       rc = lnet_send(msg->msg_src_nid_param, msg,
-                                      msg->msg_rtr_nid_param);
+                       rc = lnet_send(lnet_nid_to_nid4(&msg->msg_src_nid_param),
+                                      msg,
+                                      lnet_nid_to_nid4(&msg->msg_rtr_nid_param));
                        if (rc) {
                                CERROR("Error sending %s to %s: %d\n",
                                       lnet_msgtyp2str(msg->msg_type),
-                                      libcfs_id2str(msg->msg_target), rc);
+                                      libcfs_idstr(&msg->msg_target), rc);
                                msg->msg_no_resend = true;
                                lnet_finalize(msg, rc);
                        }
@@ -4185,14 +4186,14 @@ lnet_parse_put(struct lnet_ni *ni, struct lnet_msg *msg)
        hdr->msg.put.offset     = le32_to_cpu(hdr->msg.put.offset);
 
        /* Primary peer NID. */
-       lnet_nid4_to_nid(msg->msg_initiator, &info.mi_id.nid);
+       info.mi_id.nid = msg->msg_initiator;
        info.mi_id.pid  = hdr->src_pid;
        info.mi_opc     = LNET_MD_OP_PUT;
        info.mi_portal  = hdr->msg.put.ptl_index;
        info.mi_rlength = hdr->payload_length;
        info.mi_roffset = hdr->msg.put.offset;
        info.mi_mbits   = hdr->msg.put.match_bits;
-       info.mi_cpt     = lnet_cpt_of_nid(msg->msg_initiator, ni);
+       info.mi_cpt     = lnet_nid2cpt(&msg->msg_initiator, ni);
 
        msg->msg_rx_ready_delay = ni->ni_net->net_lnd->lnd_eager_recv == NULL;
        ready_delay = msg->msg_rx_ready_delay;
@@ -4248,14 +4249,14 @@ lnet_parse_get(struct lnet_ni *ni, struct lnet_msg *msg, int rdma_get)
        source_id.nid = hdr->src_nid;
        source_id.pid = hdr->src_pid;
        /* Primary peer NID */
-       lnet_nid4_to_nid(msg->msg_initiator, &info.mi_id.nid);
+       info.mi_id.nid  = msg->msg_initiator;
        info.mi_id.pid  = hdr->src_pid;
        info.mi_opc     = LNET_MD_OP_GET;
        info.mi_portal  = hdr->msg.get.ptl_index;
        info.mi_rlength = hdr->msg.get.sink_length;
        info.mi_roffset = hdr->msg.get.src_offset;
        info.mi_mbits   = hdr->msg.get.match_bits;
-       info.mi_cpt     = lnet_cpt_of_nid(msg->msg_initiator, ni);
+       info.mi_cpt     = lnet_nid2cpt(&msg->msg_initiator, ni);
 
        rc = lnet_ptl_match_md(&info, msg);
        if (rc == LNET_MATCHMD_DROP) {
@@ -4288,7 +4289,8 @@ lnet_parse_get(struct lnet_ni *ni, struct lnet_msg *msg, int rdma_get)
        msg->msg_receiving = 0;
 
        /* FIXME need to handle large-addr nid */
-       rc = lnet_send(lnet_nid_to_nid4(&ni->ni_nid), msg, msg->msg_from);
+       rc = lnet_send(lnet_nid_to_nid4(&ni->ni_nid), msg,
+                      lnet_nid_to_nid4(&msg->msg_from));
        if (rc < 0) {
                /* didn't get as far as lnet_ni_send() */
                CERROR("%s: Unable to send REPLY for GET from %s: %d\n",
@@ -4664,10 +4666,10 @@ lnet_parse(struct lnet_ni *ni, struct lnet_hdr *hdr, lnet_nid_t from_nid4,
        msg->msg_offset = 0;
        msg->msg_hdr = *hdr;
        /* for building message event */
-       msg->msg_from = from_nid4;
+       msg->msg_from = from_nid;
        if (!for_me) {
                msg->msg_target.pid     = dest_pid;
-               msg->msg_target.nid     = dest_nid;
+               lnet_nid4_to_nid(dest_nid, &msg->msg_target.nid);
                msg->msg_routing        = 1;
 
        } else {
@@ -4761,7 +4763,7 @@ lnet_parse(struct lnet_ni *ni, struct lnet_hdr *hdr, lnet_nid_t from_nid4,
        msg->msg_rxni = ni;
        lnet_ni_addref_locked(ni, cpt);
        /* Multi-Rail: Primary NID of source. */
-       msg->msg_initiator = lnet_peer_primary_nid_locked(src_nid);
+       lnet_peer_primary_nid_locked(src_nid, &msg->msg_initiator);
 
        /*
         * mark the status of this lpni as UP since we received a message
@@ -5100,7 +5102,7 @@ lnet_create_reply_msg(struct lnet_ni *ni, struct lnet_msg *getmsg)
 {
        struct lnet_msg *msg = lnet_msg_alloc();
        struct lnet_libmd *getmd = getmsg->msg_md;
-       struct lnet_process_id peer_id = getmsg->msg_target;
+       struct lnet_processid *peer_id = &getmsg->msg_target;
        int cpt;
 
        LASSERT(!getmsg->msg_target_is_router);
@@ -5108,7 +5110,7 @@ lnet_create_reply_msg(struct lnet_ni *ni, struct lnet_msg *getmsg)
 
        if (msg == NULL) {
                CERROR("%s: Dropping REPLY from %s: can't allocate msg\n",
-                      libcfs_nidstr(&ni->ni_nid), libcfs_id2str(peer_id));
+                      libcfs_nidstr(&ni->ni_nid), libcfs_idstr(peer_id));
                goto drop;
        }
 
@@ -5119,7 +5121,7 @@ lnet_create_reply_msg(struct lnet_ni *ni, struct lnet_msg *getmsg)
 
        if (getmd->md_threshold == 0) {
                CERROR("%s: Dropping REPLY from %s for inactive MD %p\n",
-                       libcfs_nidstr(&ni->ni_nid), libcfs_id2str(peer_id),
+                       libcfs_nidstr(&ni->ni_nid), libcfs_idstr(peer_id),
                        getmd);
                lnet_res_unlock(cpt);
                goto drop;
@@ -5128,21 +5130,21 @@ lnet_create_reply_msg(struct lnet_ni *ni, struct lnet_msg *getmsg)
        LASSERT(getmd->md_offset == 0);
 
        CDEBUG(D_NET, "%s: Reply from %s md %p\n",
-              libcfs_nidstr(&ni->ni_nid), libcfs_id2str(peer_id), getmd);
+              libcfs_nidstr(&ni->ni_nid), libcfs_idstr(peer_id), getmd);
 
        /* setup information for lnet_build_msg_event */
        msg->msg_initiator =
-               lnet_nid_to_nid4(&getmsg->msg_txpeer->lpni_peer_net->lpn_peer->lp_primary_nid);
-       msg->msg_from = peer_id.nid;
+               getmsg->msg_txpeer->lpni_peer_net->lpn_peer->lp_primary_nid;
+       msg->msg_from = peer_id->nid;
        msg->msg_type = LNET_MSG_GET; /* flag this msg as an "optimized" GET */
-       msg->msg_hdr.src_nid = peer_id.nid;
+       msg->msg_hdr.src_nid = lnet_nid_to_nid4(&peer_id->nid);
        msg->msg_hdr.payload_length = getmd->md_length;
        msg->msg_receiving = 1; /* required by lnet_msg_attach_md */
 
        lnet_msg_attach_md(msg, getmd, getmd->md_offset, getmd->md_length);
        lnet_res_unlock(cpt);
 
-       cpt = lnet_cpt_of_nid(peer_id.nid, ni);
+       cpt = lnet_nid2cpt(&peer_id->nid, ni);
 
        lnet_net_lock(cpt);
        lnet_msg_commit(msg, cpt);
@@ -5153,7 +5155,7 @@ lnet_create_reply_msg(struct lnet_ni *ni, struct lnet_msg *getmsg)
        return msg;
 
  drop:
-       cpt = lnet_cpt_of_nid(peer_id.nid, ni);
+       cpt = lnet_nid2cpt(&peer_id->nid, ni);
 
        lnet_net_lock(cpt);
        lnet_incr_stats(&ni->ni_stats, LNET_MSG_GET, LNET_STATS_TYPE_DROP);
index 1ed75cd..3d0957d 100644 (file)
@@ -81,12 +81,12 @@ lnet_build_msg_event(struct lnet_msg *msg, enum lnet_event_kind ev_type)
                ev->target.nid    = hdr->dest_nid;
                ev->initiator.pid = hdr->src_pid;
                /* Multi-Rail: resolve src_nid to "primary" peer NID */
-               ev->initiator.nid = msg->msg_initiator;
+               ev->initiator.nid = lnet_nid_to_nid4(&msg->msg_initiator);
                /* Multi-Rail: track source NID. */
                ev->source.pid    = hdr->src_pid;
                ev->source.nid    = hdr->src_nid;
                ev->rlength       = hdr->payload_length;
-               ev->sender        = msg->msg_from;
+               ev->sender        = lnet_nid_to_nid4(&msg->msg_from);
                ev->mlength       = msg->msg_wanted;
                ev->offset        = msg->msg_offset;
        }
@@ -390,7 +390,8 @@ lnet_complete_msg_locked(struct lnet_msg *msg, int cpt)
                msg->msg_hdr.msg.ack.match_bits = msg->msg_ev.match_bits;
                msg->msg_hdr.msg.ack.mlength = cpu_to_le32(msg->msg_ev.mlength);
 
-               rc = lnet_send(msg->msg_ev.target.nid, msg, msg->msg_from);
+               rc = lnet_send(msg->msg_ev.target.nid, msg,
+                              lnet_nid_to_nid4(&msg->msg_from));
 
                lnet_net_lock(cpt);
                /*
@@ -633,7 +634,7 @@ lnet_resend_msg_locked(struct lnet_msg *msg)
         * this message consumed. The message will
         * consume another credit when it gets resent.
         */
-       msg->msg_target.nid = msg->msg_hdr.dest_nid;
+       lnet_nid4_to_nid(msg->msg_hdr.dest_nid, &msg->msg_target.nid);
        lnet_msg_decommit_tx(msg, -EAGAIN);
        msg->msg_sending = 0;
        msg->msg_receiving = 0;
@@ -689,8 +690,8 @@ lnet_attempt_msg_resend(struct lnet_msg *msg)
        /* don't resend recovery messages */
        if (msg->msg_recovery) {
                CDEBUG(D_NET, "msg %s->%s is a recovery ping. retry# %d\n",
-                       libcfs_nid2str(msg->msg_from),
-                       libcfs_nid2str(msg->msg_target.nid),
+                       libcfs_nidstr(&msg->msg_from),
+                       libcfs_nidstr(&msg->msg_target.nid),
                        msg->msg_retry_count);
                return -ENOTRECOVERABLE;
        }
@@ -701,8 +702,8 @@ lnet_attempt_msg_resend(struct lnet_msg *msg)
         */
        if (msg->msg_no_resend) {
                CDEBUG(D_NET, "msg %s->%s requested no resend. retry# %d\n",
-                       libcfs_nid2str(msg->msg_from),
-                       libcfs_nid2str(msg->msg_target.nid),
+                       libcfs_nidstr(&msg->msg_from),
+                       libcfs_nidstr(&msg->msg_target.nid),
                        msg->msg_retry_count);
                return -ENOTRECOVERABLE;
        }
@@ -710,8 +711,8 @@ lnet_attempt_msg_resend(struct lnet_msg *msg)
        /* check if the message has exceeded the number of retries */
        if (msg->msg_retry_count >= lnet_retry_count) {
                CNETERR("msg %s->%s exceeded retry count %d\n",
-                       libcfs_nid2str(msg->msg_from),
-                       libcfs_nid2str(msg->msg_target.nid),
+                       libcfs_nidstr(&msg->msg_from),
+                       libcfs_nidstr(&msg->msg_target.nid),
                        msg->msg_retry_count);
                return -ENOTRECOVERABLE;
        }
index 9392e0e..95b541f 100644 (file)
@@ -685,7 +685,7 @@ lnet_ptl_attach_md(struct lnet_me *me, struct lnet_libmd *md,
 
                hdr   = &msg->msg_hdr;
                /* Multi-Rail: Primary peer NID */
-               lnet_nid4_to_nid(msg->msg_initiator, &info.mi_id.nid);
+               info.mi_id.nid  = msg->msg_initiator;
                info.mi_id.pid  = hdr->src_pid;
                info.mi_opc     = LNET_MD_OP_PUT;
                info.mi_portal  = hdr->msg.put.ptl_index;
index 627df28..c73c445 100644 (file)
@@ -1334,21 +1334,18 @@ lnet_peer_clr_pref_nids(struct lnet_peer_ni *lpni)
        }
 }
 
-lnet_nid_t
-lnet_peer_primary_nid_locked(lnet_nid_t nid)
+void
+lnet_peer_primary_nid_locked(lnet_nid_t nid, struct lnet_nid *result)
 {
        /* FIXME handle large-addr nid */
        struct lnet_peer_ni *lpni;
-       lnet_nid_t primary_nid = nid;
 
+       lnet_nid4_to_nid(nid, result);
        lpni = lnet_find_peer_ni_locked(nid);
        if (lpni) {
-               primary_nid = lnet_nid_to_nid4(
-                       &lpni->lpni_peer_net->lpn_peer->lp_primary_nid);
+               *result = lpni->lpni_peer_net->lpn_peer->lp_primary_nid;
                lnet_peer_ni_decref_locked(lpni);
        }
-
-       return primary_nid;
 }
 
 bool
@@ -2310,13 +2307,13 @@ static void lnet_peer_discovery_complete(struct lnet_peer *lp, int dc_error)
 
                CDEBUG(D_NET, "sending pending message %s to target %s\n",
                       lnet_msgtyp2str(msg->msg_type),
-                      libcfs_id2str(msg->msg_target));
-               rc = lnet_send(msg->msg_src_nid_param, msg,
-                              msg->msg_rtr_nid_param);
+                      libcfs_idstr(&msg->msg_target));
+               rc = lnet_send(lnet_nid_to_nid4(&msg->msg_src_nid_param), msg,
+                              lnet_nid_to_nid4(&msg->msg_rtr_nid_param));
                if (rc < 0) {
                        CNETERR("Error sending %s to %s: %d\n",
                               lnet_msgtyp2str(msg->msg_type),
-                              libcfs_id2str(msg->msg_target), rc);
+                              libcfs_idstr(&msg->msg_target), rc);
                        lnet_finalize(msg, rc);
                }
        }
@@ -3728,12 +3725,12 @@ static void lnet_resend_msgs(void)
 
        list_for_each_entry_safe(msg, tmp, &resend, msg_list) {
                list_del_init(&msg->msg_list);
-               rc = lnet_send(msg->msg_src_nid_param, msg,
-                              msg->msg_rtr_nid_param);
+               rc = lnet_send(lnet_nid_to_nid4(&msg->msg_src_nid_param), msg,
+                              lnet_nid_to_nid4(&msg->msg_rtr_nid_param));
                if (rc < 0) {
                        CNETERR("Error sending %s to %s: %d\n",
                               lnet_msgtyp2str(msg->msg_type),
-                              libcfs_id2str(msg->msg_target), rc);
+                              libcfs_idstr(&msg->msg_target), rc);
                        lnet_finalize(msg, rc);
                }
        }