Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4ee23a84 authored by Chris Horn's avatar Chris Horn Committed by Greg Kroah-Hartman
Browse files

staging: lustre: reflect down routes in /proc/sys/lnet/routes



We consider routes "down" if the router is down or the router
NI for the target network is down. This should be reflected
in the output of /proc/sys/lnet/routes

Signed-off-by: default avatarChris Horn <hornc@cray.com>
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3679
Reviewed-on: http://review.whamcloud.com/7857


Reviewed-by: default avatarCory Spitz <spitzcor@cray.com>
Reviewed-by: default avatarIsaac Huang <he.huang@intel.com>
Reviewed-by: default avatarOleg Drokin <oleg.drokin@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 4f0bedec
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -64,6 +64,19 @@ extern lnet_t the_lnet; /* THE network */
/** exclusive lock */
#define LNET_LOCK_EX		CFS_PERCPT_LOCK_EX

static inline int lnet_is_route_alive(lnet_route_t *route)
{
	/* gateway is down */
	if (!route->lr_gateway->lp_alive)
		return 0;
	/* no NI status, assume it's alive */
	if ((route->lr_gateway->lp_ping_feats &
	     LNET_PING_FEAT_NI_STATUS) == 0)
		return 1;
	/* has NI status, check # down NIs */
	return route->lr_downis == 0;
}

static inline int lnet_is_wire_handle_none(lnet_handle_wire_t *wh)
{
	return (wh->wh_interface_cookie == LNET_WIRE_HANDLE_COOKIE_NONE &&
+1 −3
Original line number Diff line number Diff line
@@ -1156,9 +1156,7 @@ lnet_find_route_locked(lnet_ni_t *ni, lnet_nid_t target, lnet_nid_t rtr_nid)
	list_for_each_entry(route, &rnet->lrn_routes, lr_list) {
		lp = route->lr_gateway;

		if (!lp->lp_alive || /* gateway is down */
		    ((lp->lp_ping_feats & LNET_PING_FEAT_NI_STATUS) &&
		     route->lr_downis)) /* NI to target is down */
		if (!lnet_is_route_alive(route))
			continue;

		if (ni && lp->lp_ni != ni)
+1 −1
Original line number Diff line number Diff line
@@ -242,7 +242,7 @@ static int proc_lnet_routes(struct ctl_table *table, int write,
			unsigned int hops = route->lr_hops;
			unsigned int priority = route->lr_priority;
			lnet_nid_t nid = route->lr_gateway->lp_nid;
			int alive = route->lr_gateway->lp_alive;
			int alive = lnet_is_route_alive(route);

			s += snprintf(s, tmpstr + tmpsiz - s,
				      "%-8s %4u %8u %7s %s\n",