Whamcloud - gitweb
LU-14941 lnet: Fix source specified to routed destination 30/44730/5
authorChris Horn <chris.horn@hpe.com>
Thu, 12 Aug 2021 21:16:05 +0000 (16:16 -0500)
committerOleg Drokin <green@whamcloud.com>
Tue, 30 Nov 2021 03:47:33 +0000 (03:47 +0000)
If a source NI is specified for a send then we should not modify the
destination NID that was passed to lnet_send().

HPE-bug-id: LUS-10301
Signed-off-by: Chris Horn <chris.horn@hpe.com>
Change-Id: Ie47558d5bce97a0dca30ff7d072dcd39eb903324
Reviewed-on: https://review.whamcloud.com/44730
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Serguei Smirnov <ssmirnov@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lnet/lnet/lib-move.c

index 579cfbd..01e5918 100644 (file)
@@ -2189,13 +2189,19 @@ lnet_handle_find_routed_path(struct lnet_send_data *sd,
        }
 
        if (!route_found) {
-               if (sd->sd_msg->msg_routing) {
+               if (sd->sd_msg->msg_routing || src_nid != LNET_NID_ANY) {
                        /* If I'm routing this message then I need to find the
                         * next hop based on the destination NID
+                        *
+                        * We also find next hop based on the destination NID
+                        * if the source NI was specified
                         */
                        best_rnet = lnet_find_rnet_locked(LNET_NIDNET(sd->sd_dst_nid));
                        if (!best_rnet) {
-                               CERROR("Unable to route message to %s - Route table may be misconfigured\n",
+                               CERROR("Unable to send message from %s to %s - Route table may be misconfigured\n",
+                                      src_nid != LNET_NID_ANY ?
+                                               libcfs_nid2str(src_nid) :
+                                               "any local NI",
                                       libcfs_nid2str(sd->sd_dst_nid));
                                return -EHOSTUNREACH;
                        }