"Assume routers are down and ping them before use");
static int avoid_asym_router_failure = 0;
-CFS_MODULE_PARM(avoid_asym_router_failure, "i", int, 0444,
+CFS_MODULE_PARM(avoid_asym_router_failure, "i", int, 0644,
"Avoid asymmetrical failures: reserved, use at your own risk");
static int dead_router_check_interval = 0;
-CFS_MODULE_PARM(dead_router_check_interval, "i", int, 0444,
+CFS_MODULE_PARM(dead_router_check_interval, "i", int, 0644,
"Seconds between dead router health checks (<= 0 to disable)");
static int live_router_check_interval = 0;
-CFS_MODULE_PARM(live_router_check_interval, "i", int, 0444,
+CFS_MODULE_PARM(live_router_check_interval, "i", int, 0644,
"Seconds between live router health checks (<= 0 to disable)");
static int router_ping_timeout = 50;
-CFS_MODULE_PARM(router_ping_timeout, "i", int, 0444,
+CFS_MODULE_PARM(router_ping_timeout, "i", int, 0644,
"Seconds to wait for the reply to a router health query");
int
while (!cfs_list_empty(&the_lnet.ln_rcd_zombie)) {
cfs_list_for_each_entry_safe(rcd, tmp, &the_lnet.ln_rcd_zombie,
rcd_list) {
- if (!LNetHandleIsInvalid(rcd->rcd_mdh))
+ if (LNetHandleIsInvalid(rcd->rcd_mdh))
cfs_list_move(&rcd->rcd_list, &head);
}
}
if (!wait_unlink)
- break;
+ return;
i++;
CDEBUG(((i & (-i)) == i) ? D_WARNING : D_NET,
lnet_net_lock(LNET_LOCK_EX);
}
+
+ lnet_net_unlock(LNET_LOCK_EX);
}
lnet_net_lock(cpt);
+ if (the_lnet.ln_shutdown) {
+ lnet_net_unlock(cpt);
+ return -ESHUTDOWN;
+ }
+
lp = lnet_find_peer_locked(the_lnet.ln_peer_tables[cpt], nid);
if (lp == NULL) {
/* nid not found */