From 4c0c01e29c891d100b134d0988947cfb3aeee6c1 Mon Sep 17 00:00:00 2001 From: James Simmons Date: Mon, 21 Nov 2022 09:23:56 -0500 Subject: [PATCH] LU-10391 lnet: change lnet_find_best_lpni to handle large NIDs Currently lnet_find_best_lpni() only handles small NID addresses for the dst_nid. Change this to large NID address to allow IPv6 and other large address protocols. Test-Parameters: trivial testlist=sanity-lnet Test-Parameters: serverversion=2.12 serverdistro=el7.9 testlist=runtests Test-Parameters: clientversion=2.12 testlist=runtests Signed-off-by: James Simmons Change-Id: I23ef73f5955a3016262d096706d5cf00ffa4abda Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/49181 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Neil Brown Reviewed-by: Chris Horn Reviewed-by: Frank Sehr Reviewed-by: Oleg Drokin --- lnet/lnet/lib-move.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/lnet/lnet/lib-move.c b/lnet/lnet/lib-move.c index 81b8688..67e49da 100644 --- a/lnet/lnet/lib-move.c +++ b/lnet/lnet/lib-move.c @@ -1302,7 +1302,7 @@ routing_off: } static struct lnet_peer_ni * -lnet_select_peer_ni(struct lnet_ni *best_ni, lnet_nid_t dst_nid, +lnet_select_peer_ni(struct lnet_ni *best_ni, struct lnet_nid *dst_nid, struct lnet_peer *peer, struct lnet_peer_ni *best_lpni, struct lnet_peer_net *peer_net) @@ -1408,8 +1408,8 @@ select_lpni: /* if we still can't find a peer ni then we can't reach it */ if (!best_lpni) { - __u32 net_id = (peer_net) ? peer_net->lpn_net_id : - LNET_NIDNET(dst_nid); + u32 net_id = (peer_net) ? peer_net->lpn_net_id : + LNET_NID_NET(dst_nid); CDEBUG(D_NET, "no peer_ni found on peer net %s\n", libcfs_net2str(net_id)); return NULL; @@ -1432,8 +1432,8 @@ select_lpni: * ones. */ static inline struct lnet_peer_ni * -lnet_find_best_lpni(struct lnet_ni *lni, lnet_nid_t dst_nid, - struct lnet_peer *peer, __u32 net_id) +lnet_find_best_lpni(struct lnet_ni *lni, struct lnet_nid *dst_nid, + struct lnet_peer *peer, u32 net_id) { struct lnet_peer_net *peer_net; @@ -1538,7 +1538,7 @@ lnet_find_route_locked(struct lnet_remotenet *rnet, __u32 src_net, * src_net provided. If the src_net is LNET_NID_ANY, * then select the best interface available. */ - lpni = lnet_find_best_lpni(NULL, LNET_NID_ANY, + lpni = lnet_find_best_lpni(NULL, NULL, route->lr_gateway, src_net); if (!lpni) { @@ -1582,8 +1582,7 @@ lnet_find_route_locked(struct lnet_remotenet *rnet, __u32 src_net, * src_net provided. If the src_net is LNET_NID_ANY, * then select the best interface available. */ - lpni = lnet_find_best_lpni(NULL, LNET_NID_ANY, - route->lr_gateway, + lpni = lnet_find_best_lpni(NULL, NULL, route->lr_gateway, src_net); if (!lpni) { CDEBUG(D_NET, @@ -2305,7 +2304,7 @@ use_lpn: libcfs_net2str(best_lpn->lpn_net_id)); sd->sd_best_lpni = lnet_find_best_lpni(sd->sd_best_ni, - lnet_nid_to_nid4(&sd->sd_dst_nid), + &sd->sd_dst_nid, lp, best_lpn->lpn_net_id); if (!sd->sd_best_lpni) { @@ -2754,8 +2753,7 @@ lnet_handle_any_mr_dsta(struct lnet_send_data *sd) lnet_msg_discovery(sd->sd_msg)); if (sd->sd_best_ni) { sd->sd_best_lpni = - lnet_find_best_lpni(sd->sd_best_ni, - lnet_nid_to_nid4(&sd->sd_dst_nid), + lnet_find_best_lpni(sd->sd_best_ni, &sd->sd_dst_nid, sd->sd_peer, sd->sd_best_ni->ni_net->net_id); -- 1.8.3.1