Whamcloud - gitweb
LU-13471 lnet: use the same src nid for discovery 76/39576/4
authorAmir Shehata <ashehata@whamcloud.com>
Thu, 23 Apr 2020 00:06:23 +0000 (17:06 -0700)
committerOleg Drokin <green@whamcloud.com>
Sat, 19 Sep 2020 18:13:05 +0000 (18:13 +0000)
commitb4b93d26c9b89d4f57614ed81e6959b6c9d0b3d7
treed96794473eac50d0d70b35d665fdb38f78e6b1d2
parent76531b74d1280b93b6aa105e960819d806cc44f1
LU-13471 lnet: use the same src nid for discovery

When discovering a remote peer (not on the same network) a GET is
sent to the peer to retrieve the peer's interfaces.  This is followed
by a PUSH, if discovery is on, to push the node's interfaces However,
if both node and peer have multiple interfaces it is likely that the
GET and the PUSH will originate on different interfaces. When the
peer receives the PUSH it will not be able to connect the two NIDs
and will not be able to consolidate the node's NIDs.  This issue is
specific for remote peers because at the time the push handler is
invoked the remote lpni has not been created yet. lnet_parse()
creates the lpni of the gateway.

Similar to the strategy already in place of using the same source NID
for all the messages of an RPC, discovery should use the same source
NID for both the GET and PUSH.

This patch stores the source NID interfaces the GET was sent on and
uses it for the PUSH.

Signed-off-by: Amir Shehata <ashehata@whamcloud.com>
Change-Id: I5a13ab7799b2ddc47714202bcbed786b0d3940b7
Reviewed-on: https://review.whamcloud.com/38320
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Chris Horn <chris.horn@hpe.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Serguei Smirnov <ssmirnov@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/39576
lnet/include/lnet/lib-types.h
lnet/lnet/peer.c