When processing the config log it is possible that we attempt to
add temp NIs after discovery has completed on a peer. These temp
may not actually exist on the peer. Since discovery has already
completed the peer is considered up-to-date and we can end up with
incorrect peer entries. We shouldn't add temp NIs to a peer that
is already up-to-date.
HPE-bug-id: LUS-10867
Test-Parameters: trivial testlist=sanity-lnet
Signed-off-by: Chris Horn <chris.horn@hpe.com>
Change-Id: Ia484713b1e6c9e1a46e525589b7c741c6478e417
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/47322
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Frank Sehr <fsehr@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
int
lnet_add_peer_ni(struct lnet_nid *prim_nid, struct lnet_nid *nid, bool mr,
bool temp)
+__must_hold(&the_lnet.ln_api_mutex)
{
struct lnet_peer *lp = NULL;
struct lnet_peer_ni *lpni;
return -EPERM;
}
+ if (temp && lnet_peer_is_uptodate(lp)) {
+ CDEBUG(D_NET,
+ "Don't add temporary peer NI for uptodate peer %s\n",
+ libcfs_nidstr(&lp->lp_primary_nid));
+ return -EINVAL;
+ }
+
return lnet_peer_add_nid(lp, nid, flags);
}