Whamcloud - gitweb
LU-12756 lnet: Avoid extra lnet_remotenet lookup
[fs/lustre-release.git] / lnet / lnet / lib-move.c
index f735355..e9daed8 100644 (file)
@@ -1510,23 +1510,18 @@ lnet_compare_routes(struct lnet_route *r1, struct lnet_route *r2,
 }
 
 static struct lnet_route *
-lnet_find_route_locked(struct lnet_net *net, __u32 remote_net,
+lnet_find_route_locked(struct lnet_remotenet *rnet,
                       struct lnet_route **prev_route,
                       struct lnet_peer_ni **gwni)
 {
        struct lnet_peer_ni *best_gw_ni = NULL;
        struct lnet_route *best_route;
        struct lnet_route *last_route;
-       struct lnet_remotenet *rnet;
        struct lnet_peer *lp_best;
        struct lnet_route *route;
        struct lnet_peer *lp;
        int rc;
 
-       rnet = lnet_find_rnet_locked(remote_net);
-       if (rnet == NULL)
-               return NULL;
-
        lp_best = NULL;
        best_route = last_route = NULL;
        list_for_each_entry(route, &rnet->lrn_routes, lr_list) {
@@ -2032,7 +2027,7 @@ lnet_handle_find_routed_path(struct lnet_send_data *sd,
        struct lnet_peer *lp;
        struct lnet_peer_net *lpn;
        struct lnet_peer_net *best_lpn = NULL;
-       struct lnet_remotenet *rnet;
+       struct lnet_remotenet *rnet, *best_rnet = NULL;
        struct lnet_route *best_route = NULL;
        struct lnet_route *last_route = NULL;
        struct lnet_peer_ni *lpni = NULL;
@@ -2067,13 +2062,16 @@ lnet_handle_find_routed_path(struct lnet_send_data *sd,
                        if (!rnet)
                                continue;
 
-                       if (!best_lpn)
+                       if (!best_lpn) {
                                best_lpn = lpn;
+                               best_rnet = rnet;
+                       }
 
                        if (best_lpn->lpn_seq <= lpn->lpn_seq)
                                continue;
 
                        best_lpn = lpn;
+                       best_rnet = rnet;
                }
 
                if (!best_lpn) {
@@ -2092,8 +2090,8 @@ lnet_handle_find_routed_path(struct lnet_send_data *sd,
                        return -EHOSTUNREACH;
                }
 
-               best_route = lnet_find_route_locked(NULL, best_lpn->lpn_net_id,
-                                                   &last_route, &gwni);
+               best_route = lnet_find_route_locked(best_rnet, &last_route,
+                                                   &gwni);
                if (!best_route) {
                        CERROR("no route to %s from %s\n",
                               libcfs_nid2str(dst_nid),