X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lnet%2Flnet%2Frouter_proc.c;h=b7365f2a94d9b79b8f6c152dbb37e25be015284b;hb=046a965cf0f54265208e74566d181f1ee9a3a729;hp=837c2a7ab9198bf1a67c36f5f0dc357c4815f138;hpb=e3d9be7c5561af9d08075c7e78503944c4d30e60;p=fs%2Flustre-release.git diff --git a/lnet/lnet/router_proc.c b/lnet/lnet/router_proc.c index 837c2a7..b7365f2 100644 --- a/lnet/lnet/router_proc.c +++ b/lnet/lnet/router_proc.c @@ -1,7 +1,7 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * * This file is part of Portals * http://sourceforge.net/projects/sandiaportals/ @@ -27,7 +27,8 @@ #if defined(__KERNEL__) && defined(LNET_ROUTER) -/* this is really lnet_proc.c */ +/* This is really lnet_proc.c. You might need to update sanity test 215 + * if any file format is changed. */ static cfs_sysctl_table_header_t *lnet_table_header = NULL; @@ -407,8 +408,8 @@ int LL_PROC_PROTO(proc_lnet_peers) if (*ppos == 0) { s += snprintf(s, tmpstr + tmpsiz - s, - "%-24s %4s %5s %5s %5s %5s %5s %5s %s\n", - "nid", "refs", "state", "max", + "%-24s %4s %5s %5s %5s %5s %5s %5s %5s %s\n", + "nid", "refs", "state", "last", "max", "rtr", "min", "tx", "min", "queue"); LASSERT (tmpstr + tmpsiz - s > 0); @@ -441,7 +442,7 @@ int LL_PROC_PROTO(proc_lnet_peers) if (skip == 0) { peer = lp; - /* minor optimiztion: start from idx+1 + /* minor optimization: start from idx+1 * on next iteration if we've just * drained lp_hashlist */ if (lp->lp_hashlist.next == @@ -470,6 +471,7 @@ int LL_PROC_PROTO(proc_lnet_peers) if (peer != NULL) { lnet_nid_t nid = peer->lp_nid; int nrefs = peer->lp_refcount; + int lastalive = -1; char *aliveness = "NA"; int maxcr = peer->lp_ni->ni_peertxcredits; int txcr = peer->lp_txcredits; @@ -482,10 +484,25 @@ int LL_PROC_PROTO(proc_lnet_peers) lnet_peer_aliveness_enabled(peer)) aliveness = peer->lp_alive ? "up" : "down"; + if (lnet_peer_aliveness_enabled(peer)) { + cfs_time_t now = cfs_time_current(); + cfs_duration_t delta; + + delta = cfs_time_sub(now, peer->lp_last_alive); + lastalive = cfs_duration_sec(delta); + + /* No need to mess up peers contents with + * arbitrarily long integers - it suffices to + * know that lastalive is more than 10000s old + */ + if (lastalive >= 10000) + lastalive = 9999; + } + s += snprintf(s, tmpstr + tmpsiz - s, - "%-24s %4d %5s %5d %5d %5d %5d %5d %d\n", + "%-24s %4d %5s %5d %5d %5d %5d %5d %5d %d\n", libcfs_nid2str(nid), nrefs, aliveness, - maxcr, rtrcr, minrtrcr, txcr, + lastalive, maxcr, rtrcr, minrtrcr, txcr, mintxcr, txqnob); LASSERT (tmpstr + tmpsiz - s > 0); } @@ -674,47 +691,49 @@ static cfs_sysctl_table_t lnet_table[] = { * to go via /proc for portability. */ { - .ctl_name = PSDEV_LNET_STATS, + INIT_CTL_NAME(PSDEV_LNET_STATS) .procname = "stats", .mode = 0644, .proc_handler = &proc_lnet_stats, }, { - .ctl_name = PSDEV_LNET_ROUTES, + INIT_CTL_NAME(PSDEV_LNET_ROUTES) .procname = "routes", .mode = 0444, .proc_handler = &proc_lnet_routes, }, { - .ctl_name = PSDEV_LNET_ROUTERS, + INIT_CTL_NAME(PSDEV_LNET_ROUTERS) .procname = "routers", .mode = 0444, .proc_handler = &proc_lnet_routers, }, { - .ctl_name = PSDEV_LNET_PEERS, + INIT_CTL_NAME(PSDEV_LNET_PEERS) .procname = "peers", .mode = 0444, .proc_handler = &proc_lnet_peers, }, { - .ctl_name = PSDEV_LNET_PEERS, + INIT_CTL_NAME(PSDEV_LNET_PEERS) .procname = "buffers", .mode = 0444, .proc_handler = &proc_lnet_buffers, }, { - .ctl_name = PSDEV_LNET_NIS, + INIT_CTL_NAME(PSDEV_LNET_NIS) .procname = "nis", .mode = 0444, .proc_handler = &proc_lnet_nis, }, - {0} + { + INIT_CTL_NAME(0) + } }; static cfs_sysctl_table_t top_table[] = { { - .ctl_name = CTL_LNET, + INIT_CTL_NAME(CTL_LNET) .procname = "lnet", .mode = 0555, .data = NULL, @@ -722,7 +741,7 @@ static cfs_sysctl_table_t top_table[] = { .child = lnet_table, }, { - .ctl_name = 0 + INIT_CTL_NAME(0) } };