X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lnet%2Flnet%2Frouter_proc.c;h=6247c532cabe9d54e5c7015a643b044214bdafa6;hp=ce8c6b3cf9d5e24dedb24d49c3f0babcff1c7573;hb=2c56a64e065f471057928f16b9b550ca0050bdc1;hpb=dcb19f88a081ccb2a9e959568a23d090d842a3fb diff --git a/lnet/lnet/router_proc.c b/lnet/lnet/router_proc.c index ce8c6b3..6247c53 100644 --- a/lnet/lnet/router_proc.c +++ b/lnet/lnet/router_proc.c @@ -27,16 +27,19 @@ #if defined(__KERNEL__) && defined(LNET_ROUTER) +#if defined(__linux__) #include +#endif /* this is really lnet_proc.c */ -#define LNET_PROC_STATS "sys/lnet/stats" -#define LNET_PROC_ROUTES "sys/lnet/routes" -#define LNET_PROC_ROUTERS "sys/lnet/routers" -#define LNET_PROC_PEERS "sys/lnet/peers" -#define LNET_PROC_BUFFERS "sys/lnet/buffers" -#define LNET_PROC_NIS "sys/lnet/nis" +#define LNET_PROC_ROOT "sys/lnet" +#define LNET_PROC_STATS LNET_PROC_ROOT"/stats" +#define LNET_PROC_ROUTES LNET_PROC_ROOT"/routes" +#define LNET_PROC_ROUTERS LNET_PROC_ROOT"/routers" +#define LNET_PROC_PEERS LNET_PROC_ROOT"/peers" +#define LNET_PROC_BUFFERS LNET_PROC_ROOT"/buffers" +#define LNET_PROC_NIS LNET_PROC_ROOT"/nis" static int lnet_router_proc_stats_read (char *page, char **start, off_t off, @@ -248,10 +251,10 @@ lnet_route_seq_show (struct seq_file *s, void *iter) } static struct seq_operations lnet_routes_sops = { - .start = lnet_route_seq_start, - .stop = lnet_route_seq_stop, - .next = lnet_route_seq_next, - .show = lnet_route_seq_show, + /* start */ lnet_route_seq_start, + /* stop */ lnet_route_seq_stop, + /* next */ lnet_route_seq_next, + /* show */ lnet_route_seq_show, }; static int @@ -270,13 +273,17 @@ lnet_route_seq_open(struct inode *inode, struct file *file) return rc; } -static struct file_operations lnet_routes_fops = { - .owner = THIS_MODULE, - .open = lnet_route_seq_open, - .read = seq_read, - .llseek = seq_lseek, - .release = seq_release, -}; +static struct file_operations lnet_routes_fops; + +static void +lnet_init_routes_fops(void) +{ + lnet_routes_fops.owner = THIS_MODULE; + lnet_routes_fops.llseek = seq_lseek; + lnet_routes_fops.read = seq_read; + lnet_routes_fops.open = lnet_route_seq_open; + lnet_routes_fops.release = seq_release; +} typedef struct { __u64 lrtrsi_version; @@ -426,7 +433,7 @@ lnet_router_seq_show (struct seq_file *s, void *iter) LNET_UNLOCK(); - seq_printf(s, + seq_printf(s, "%-4d %7d %9d %6s %12lu %s\n", nrefs, nrtrrefs, alive_cnt, alive ? "up" : "down", last_ping, libcfs_nid2str(nid)); @@ -434,10 +441,10 @@ lnet_router_seq_show (struct seq_file *s, void *iter) } static struct seq_operations lnet_routers_sops = { - .start = lnet_router_seq_start, - .stop = lnet_router_seq_stop, - .next = lnet_router_seq_next, - .show = lnet_router_seq_show, + /* start */ lnet_router_seq_start, + /* stop */ lnet_router_seq_stop, + /* next */ lnet_router_seq_next, + /* show */ lnet_router_seq_show, }; static int @@ -456,13 +463,17 @@ lnet_router_seq_open(struct inode *inode, struct file *file) return rc; } -static struct file_operations lnet_routers_fops = { - .owner = THIS_MODULE, - .open = lnet_router_seq_open, - .read = seq_read, - .llseek = seq_lseek, - .release = seq_release, -}; +static struct file_operations lnet_routers_fops; + +static void +lnet_init_routers_fops(void) +{ + lnet_routers_fops.owner = THIS_MODULE; + lnet_routers_fops.llseek = seq_lseek; + lnet_routers_fops.read = seq_read; + lnet_routers_fops.open = lnet_router_seq_open; + lnet_routers_fops.release = seq_release; +} typedef struct { unsigned long long lpsi_version; @@ -592,6 +603,7 @@ static int lnet_peer_seq_show (struct seq_file *s, void *iter) { lnet_peer_seq_iterator_t *lpsi = iter; + char *aliveness = "NA"; lnet_peer_t *lp; lnet_nid_t nid; int maxcr; @@ -599,8 +611,6 @@ lnet_peer_seq_show (struct seq_file *s, void *iter) int txcr; int minrtrcr; int rtrcr; - int alive; - int rtr; int txqnob; int nrefs; @@ -628,25 +638,25 @@ lnet_peer_seq_show (struct seq_file *s, void *iter) mintxcr = lp->lp_mintxcredits; rtrcr = lp->lp_rtrcredits; minrtrcr = lp->lp_minrtrcredits; - rtr = lnet_isrouter(lp); - alive = lp->lp_alive; txqnob = lp->lp_txqnob; nrefs = lp->lp_refcount; + if (lnet_isrouter(lp) || lp->lp_ni->ni_peertimeout > 0) + aliveness = lp->lp_alive ? "up" : "down"; + LNET_UNLOCK(); seq_printf(s, "%-24s %4d %5s %5d %5d %5d %5d %5d %d\n", - libcfs_nid2str(nid), nrefs, - !rtr ? "~rtr" : (alive ? "up" : "down"), + libcfs_nid2str(nid), nrefs, aliveness, maxcr, rtrcr, minrtrcr, txcr, mintxcr, txqnob); return 0; } static struct seq_operations lnet_peer_sops = { - .start = lnet_peer_seq_start, - .stop = lnet_peer_seq_stop, - .next = lnet_peer_seq_next, - .show = lnet_peer_seq_show, + /* start */ lnet_peer_seq_start, + /* stop */ lnet_peer_seq_stop, + /* next */ lnet_peer_seq_next, + /* show */ lnet_peer_seq_show, }; static int @@ -665,13 +675,17 @@ lnet_peer_seq_open(struct inode *inode, struct file *file) return rc; } -static struct file_operations lnet_peer_fops = { - .owner = THIS_MODULE, - .open = lnet_peer_seq_open, - .read = seq_read, - .llseek = seq_lseek, - .release = seq_release, -}; +static struct file_operations lnet_peer_fops; + +static void +lnet_init_peer_fops(void) +{ + lnet_peer_fops.owner = THIS_MODULE; + lnet_peer_fops.llseek = seq_lseek; + lnet_peer_fops.read = seq_read; + lnet_peer_fops.open = lnet_peer_seq_open; + lnet_peer_fops.release = seq_release; +} typedef struct { int lbsi_idx; @@ -803,10 +817,10 @@ lnet_buffer_seq_show (struct seq_file *s, void *iter) } static struct seq_operations lnet_buffer_sops = { - .start = lnet_buffer_seq_start, - .stop = lnet_buffer_seq_stop, - .next = lnet_buffer_seq_next, - .show = lnet_buffer_seq_show, + /* start */ lnet_buffer_seq_start, + /* stop */ lnet_buffer_seq_stop, + /* next */ lnet_buffer_seq_next, + /* show */ lnet_buffer_seq_show, }; static int @@ -825,13 +839,17 @@ lnet_buffer_seq_open(struct inode *inode, struct file *file) return rc; } -static struct file_operations lnet_buffers_fops = { - .owner = THIS_MODULE, - .open = lnet_buffer_seq_open, - .read = seq_read, - .llseek = seq_lseek, - .release = seq_release, -}; +static struct file_operations lnet_buffers_fops; + +static void +lnet_init_buffers_fops(void) +{ + lnet_buffers_fops.owner = THIS_MODULE; + lnet_buffers_fops.llseek = seq_lseek; + lnet_buffers_fops.read = seq_read; + lnet_buffers_fops.open = lnet_buffer_seq_open; + lnet_buffers_fops.release = seq_release; +} typedef struct { lnet_ni_t *lnsi_ni; @@ -940,12 +958,13 @@ lnet_ni_seq_show (struct seq_file *s, void *iter) int txcr; int mintxcr; int npeertxcr; + int npeerrtrcr; lnet_nid_t nid; int nref; if (lnsi->lnsi_off == 0) { - seq_printf(s, "%-24s %4s %4s %5s %5s %5s\n", - "nid", "refs", "peer", "max", "tx", "min"); + seq_printf(s, "%-24s %4s %4s %4s %5s %5s %5s\n", + "nid", "refs", "peer", "rtr", "max", "tx", "min"); return 0; } @@ -955,26 +974,27 @@ lnet_ni_seq_show (struct seq_file *s, void *iter) ni = lnsi->lnsi_ni; - maxtxcr = ni->ni_maxtxcredits; - txcr = ni->ni_txcredits; - mintxcr = ni->ni_mintxcredits; - npeertxcr = ni->ni_peertxcredits; - nid = ni->ni_nid; - nref = ni->ni_refcount; + maxtxcr = ni->ni_maxtxcredits; + txcr = ni->ni_txcredits; + mintxcr = ni->ni_mintxcredits; + npeertxcr = ni->ni_peertxcredits; + npeerrtrcr = ni->ni_peerrtrcredits; + nid = ni->ni_nid; + nref = ni->ni_refcount; LNET_UNLOCK(); - seq_printf(s, "%-24s %4d %4d %5d %5d %5d\n", + seq_printf(s, "%-24s %4d %4d %4d %5d %5d %5d\n", libcfs_nid2str(nid), nref, - npeertxcr, maxtxcr, txcr, mintxcr); + npeertxcr, npeerrtrcr, maxtxcr, txcr, mintxcr); return 0; } static struct seq_operations lnet_ni_sops = { - .start = lnet_ni_seq_start, - .stop = lnet_ni_seq_stop, - .next = lnet_ni_seq_next, - .show = lnet_ni_seq_show, + /* start */ lnet_ni_seq_start, + /* stop */ lnet_ni_seq_stop, + /* next */ lnet_ni_seq_next, + /* show */ lnet_ni_seq_show, }; static int @@ -993,19 +1013,30 @@ lnet_ni_seq_open(struct inode *inode, struct file *file) return rc; } -static struct file_operations lnet_ni_fops = { - .owner = THIS_MODULE, - .open = lnet_ni_seq_open, - .read = seq_read, - .llseek = seq_lseek, - .release = seq_release, -}; +static struct file_operations lnet_ni_fops; + +static void +lnet_init_ni_fops(void) +{ + lnet_ni_fops.owner = THIS_MODULE; + lnet_ni_fops.llseek = seq_lseek; + lnet_ni_fops.read = seq_read; + lnet_ni_fops.open = lnet_ni_seq_open; + lnet_ni_fops.release = seq_release; +} void lnet_proc_init(void) { struct proc_dir_entry *pde; +#if 0 + pde = proc_mkdir(LNET_PROC_ROOT, NULL); + if (pde == NULL) { + CERROR("couldn't create "LNET_PROC_ROOT"\n"); + return; + } +#endif /* Initialize LNET_PROC_STATS */ pde = create_proc_entry (LNET_PROC_STATS, 0644, NULL); if (pde == NULL) { @@ -1024,6 +1055,7 @@ lnet_proc_init(void) return; } + lnet_init_routes_fops(); pde->proc_fops = &lnet_routes_fops; pde->data = NULL; @@ -1034,6 +1066,7 @@ lnet_proc_init(void) return; } + lnet_init_routers_fops(); pde->proc_fops = &lnet_routers_fops; pde->data = NULL; @@ -1044,6 +1077,7 @@ lnet_proc_init(void) return; } + lnet_init_peer_fops(); pde->proc_fops = &lnet_peer_fops; pde->data = NULL; @@ -1054,6 +1088,7 @@ lnet_proc_init(void) return; } + lnet_init_buffers_fops(); pde->proc_fops = &lnet_buffers_fops; pde->data = NULL; @@ -1064,6 +1099,7 @@ lnet_proc_init(void) return; } + lnet_init_ni_fops(); pde->proc_fops = &lnet_ni_fops; pde->data = NULL; } @@ -1077,6 +1113,9 @@ lnet_proc_fini(void) remove_proc_entry(LNET_PROC_PEERS, 0); remove_proc_entry(LNET_PROC_BUFFERS, 0); remove_proc_entry(LNET_PROC_NIS, 0); +#if 0 + remove_proc_entry(LNET_PROC_ROOT, 0); +#endif } #else