Loading include/linux/sunrpc/stats.h +15 −8 Original line number Diff line number Diff line Loading @@ -38,8 +38,21 @@ struct svc_stat { rpcbadclnt; }; void rpc_proc_init(void); void rpc_proc_exit(void); struct net; #ifdef CONFIG_PROC_FS int rpc_proc_init(struct net *); void rpc_proc_exit(struct net *); #else static inline int rpc_proc_init(struct net *net) { return 0; } static inline void rpc_proc_exit(struct net *net) { } #endif #ifdef MODULE void rpc_modcount(struct inode *, int); #endif Loading @@ -54,9 +67,6 @@ void svc_proc_unregister(const char *); void svc_seq_show(struct seq_file *, const struct svc_stat *); extern struct proc_dir_entry *proc_net_rpc; #else static inline struct proc_dir_entry *rpc_proc_register(struct rpc_stat *s) { return NULL; } Loading @@ -69,9 +79,6 @@ static inline void svc_proc_unregister(const char *p) {} static inline void svc_seq_show(struct seq_file *seq, const struct svc_stat *st) {} #define proc_net_rpc NULL #endif #endif /* _LINUX_SUNRPC_STATS_H */ net/sunrpc/cache.c +8 −3 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ #include <linux/sunrpc/cache.h> #include <linux/sunrpc/stats.h> #include <linux/sunrpc/rpc_pipe_fs.h> #include <net/net_namespace.h> #include "netns.h" #define RPCDBG_FACILITY RPCDBG_CACHE Loading Loading @@ -1540,6 +1540,8 @@ static const struct file_operations cache_flush_operations_procfs = { static void remove_cache_proc_entries(struct cache_detail *cd, struct net *net) { struct sunrpc_net *sn; if (cd->u.procfs.proc_ent == NULL) return; if (cd->u.procfs.flush_ent) Loading @@ -1549,15 +1551,18 @@ static void remove_cache_proc_entries(struct cache_detail *cd, struct net *net) if (cd->u.procfs.content_ent) remove_proc_entry("content", cd->u.procfs.proc_ent); cd->u.procfs.proc_ent = NULL; remove_proc_entry(cd->name, proc_net_rpc); sn = net_generic(net, sunrpc_net_id); remove_proc_entry(cd->name, sn->proc_net_rpc); } #ifdef CONFIG_PROC_FS static int create_cache_proc_entries(struct cache_detail *cd, struct net *net) { struct proc_dir_entry *p; struct sunrpc_net *sn; cd->u.procfs.proc_ent = proc_mkdir(cd->name, proc_net_rpc); sn = net_generic(net, sunrpc_net_id); cd->u.procfs.proc_ent = proc_mkdir(cd->name, sn->proc_net_rpc); if (cd->u.procfs.proc_ent == NULL) goto out_nomem; cd->u.procfs.channel_ent = NULL; Loading net/sunrpc/netns.h +1 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ #include <net/netns/generic.h> struct sunrpc_net { struct proc_dir_entry *proc_net_rpc; }; extern int sunrpc_net_id; Loading net/sunrpc/stats.c +25 −18 Original line number Diff line number Diff line Loading @@ -22,11 +22,10 @@ #include <linux/sunrpc/clnt.h> #include <linux/sunrpc/svcsock.h> #include <linux/sunrpc/metrics.h> #include <net/net_namespace.h> #define RPCDBG_FACILITY RPCDBG_MISC #include "netns.h" struct proc_dir_entry *proc_net_rpc = NULL; #define RPCDBG_FACILITY RPCDBG_MISC /* * Get RPC client stats Loading Loading @@ -218,10 +217,11 @@ EXPORT_SYMBOL_GPL(rpc_print_iostats); static inline struct proc_dir_entry * do_register(const char *name, void *data, const struct file_operations *fops) { rpc_proc_init(); dprintk("RPC: registering /proc/net/rpc/%s\n", name); struct sunrpc_net *sn; return proc_create_data(name, 0, proc_net_rpc, fops, data); dprintk("RPC: registering /proc/net/rpc/%s\n", name); sn = net_generic(&init_net, sunrpc_net_id); return proc_create_data(name, 0, sn->proc_net_rpc, fops, data); } struct proc_dir_entry * Loading @@ -234,7 +234,10 @@ EXPORT_SYMBOL_GPL(rpc_proc_register); void rpc_proc_unregister(const char *name) { remove_proc_entry(name, proc_net_rpc); struct sunrpc_net *sn; sn = net_generic(&init_net, sunrpc_net_id); remove_proc_entry(name, sn->proc_net_rpc); } EXPORT_SYMBOL_GPL(rpc_proc_unregister); Loading @@ -248,25 +251,29 @@ EXPORT_SYMBOL_GPL(svc_proc_register); void svc_proc_unregister(const char *name) { remove_proc_entry(name, proc_net_rpc); struct sunrpc_net *sn; sn = net_generic(&init_net, sunrpc_net_id); remove_proc_entry(name, sn->proc_net_rpc); } EXPORT_SYMBOL_GPL(svc_proc_unregister); void rpc_proc_init(void) int rpc_proc_init(struct net *net) { struct sunrpc_net *sn; dprintk("RPC: registering /proc/net/rpc\n"); if (!proc_net_rpc) proc_net_rpc = proc_mkdir("rpc", init_net.proc_net); sn = net_generic(net, sunrpc_net_id); sn->proc_net_rpc = proc_mkdir("rpc", net->proc_net); if (sn->proc_net_rpc == NULL) return -ENOMEM; return 0; } void rpc_proc_exit(void) void rpc_proc_exit(struct net *net) { dprintk("RPC: unregistering /proc/net/rpc\n"); if (proc_net_rpc) { proc_net_rpc = NULL; remove_proc_entry("rpc", init_net.proc_net); } remove_proc_entry("rpc", net->proc_net); } net/sunrpc/sunrpc_syms.c +10 −6 Original line number Diff line number Diff line Loading @@ -28,11 +28,21 @@ int sunrpc_net_id; static __net_init int sunrpc_init_net(struct net *net) { int err; err = rpc_proc_init(net); if (err) goto err_proc; return 0; err_proc: return err; } static __net_exit void sunrpc_exit_net(struct net *net) { rpc_proc_exit(net); } static struct pernet_operations sunrpc_net_ops = { Loading Loading @@ -66,9 +76,6 @@ init_sunrpc(void) goto out4; #ifdef RPC_DEBUG rpc_register_sysctl(); #endif #ifdef CONFIG_PROC_FS rpc_proc_init(); #endif cache_register(&ip_map_cache); cache_register(&unix_gid_cache); Loading Loading @@ -100,9 +107,6 @@ cleanup_sunrpc(void) unregister_pernet_subsys(&sunrpc_net_ops); #ifdef RPC_DEBUG rpc_unregister_sysctl(); #endif #ifdef CONFIG_PROC_FS rpc_proc_exit(); #endif rcu_barrier(); /* Wait for completion of call_rcu()'s */ } Loading Loading
include/linux/sunrpc/stats.h +15 −8 Original line number Diff line number Diff line Loading @@ -38,8 +38,21 @@ struct svc_stat { rpcbadclnt; }; void rpc_proc_init(void); void rpc_proc_exit(void); struct net; #ifdef CONFIG_PROC_FS int rpc_proc_init(struct net *); void rpc_proc_exit(struct net *); #else static inline int rpc_proc_init(struct net *net) { return 0; } static inline void rpc_proc_exit(struct net *net) { } #endif #ifdef MODULE void rpc_modcount(struct inode *, int); #endif Loading @@ -54,9 +67,6 @@ void svc_proc_unregister(const char *); void svc_seq_show(struct seq_file *, const struct svc_stat *); extern struct proc_dir_entry *proc_net_rpc; #else static inline struct proc_dir_entry *rpc_proc_register(struct rpc_stat *s) { return NULL; } Loading @@ -69,9 +79,6 @@ static inline void svc_proc_unregister(const char *p) {} static inline void svc_seq_show(struct seq_file *seq, const struct svc_stat *st) {} #define proc_net_rpc NULL #endif #endif /* _LINUX_SUNRPC_STATS_H */
net/sunrpc/cache.c +8 −3 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ #include <linux/sunrpc/cache.h> #include <linux/sunrpc/stats.h> #include <linux/sunrpc/rpc_pipe_fs.h> #include <net/net_namespace.h> #include "netns.h" #define RPCDBG_FACILITY RPCDBG_CACHE Loading Loading @@ -1540,6 +1540,8 @@ static const struct file_operations cache_flush_operations_procfs = { static void remove_cache_proc_entries(struct cache_detail *cd, struct net *net) { struct sunrpc_net *sn; if (cd->u.procfs.proc_ent == NULL) return; if (cd->u.procfs.flush_ent) Loading @@ -1549,15 +1551,18 @@ static void remove_cache_proc_entries(struct cache_detail *cd, struct net *net) if (cd->u.procfs.content_ent) remove_proc_entry("content", cd->u.procfs.proc_ent); cd->u.procfs.proc_ent = NULL; remove_proc_entry(cd->name, proc_net_rpc); sn = net_generic(net, sunrpc_net_id); remove_proc_entry(cd->name, sn->proc_net_rpc); } #ifdef CONFIG_PROC_FS static int create_cache_proc_entries(struct cache_detail *cd, struct net *net) { struct proc_dir_entry *p; struct sunrpc_net *sn; cd->u.procfs.proc_ent = proc_mkdir(cd->name, proc_net_rpc); sn = net_generic(net, sunrpc_net_id); cd->u.procfs.proc_ent = proc_mkdir(cd->name, sn->proc_net_rpc); if (cd->u.procfs.proc_ent == NULL) goto out_nomem; cd->u.procfs.channel_ent = NULL; Loading
net/sunrpc/netns.h +1 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ #include <net/netns/generic.h> struct sunrpc_net { struct proc_dir_entry *proc_net_rpc; }; extern int sunrpc_net_id; Loading
net/sunrpc/stats.c +25 −18 Original line number Diff line number Diff line Loading @@ -22,11 +22,10 @@ #include <linux/sunrpc/clnt.h> #include <linux/sunrpc/svcsock.h> #include <linux/sunrpc/metrics.h> #include <net/net_namespace.h> #define RPCDBG_FACILITY RPCDBG_MISC #include "netns.h" struct proc_dir_entry *proc_net_rpc = NULL; #define RPCDBG_FACILITY RPCDBG_MISC /* * Get RPC client stats Loading Loading @@ -218,10 +217,11 @@ EXPORT_SYMBOL_GPL(rpc_print_iostats); static inline struct proc_dir_entry * do_register(const char *name, void *data, const struct file_operations *fops) { rpc_proc_init(); dprintk("RPC: registering /proc/net/rpc/%s\n", name); struct sunrpc_net *sn; return proc_create_data(name, 0, proc_net_rpc, fops, data); dprintk("RPC: registering /proc/net/rpc/%s\n", name); sn = net_generic(&init_net, sunrpc_net_id); return proc_create_data(name, 0, sn->proc_net_rpc, fops, data); } struct proc_dir_entry * Loading @@ -234,7 +234,10 @@ EXPORT_SYMBOL_GPL(rpc_proc_register); void rpc_proc_unregister(const char *name) { remove_proc_entry(name, proc_net_rpc); struct sunrpc_net *sn; sn = net_generic(&init_net, sunrpc_net_id); remove_proc_entry(name, sn->proc_net_rpc); } EXPORT_SYMBOL_GPL(rpc_proc_unregister); Loading @@ -248,25 +251,29 @@ EXPORT_SYMBOL_GPL(svc_proc_register); void svc_proc_unregister(const char *name) { remove_proc_entry(name, proc_net_rpc); struct sunrpc_net *sn; sn = net_generic(&init_net, sunrpc_net_id); remove_proc_entry(name, sn->proc_net_rpc); } EXPORT_SYMBOL_GPL(svc_proc_unregister); void rpc_proc_init(void) int rpc_proc_init(struct net *net) { struct sunrpc_net *sn; dprintk("RPC: registering /proc/net/rpc\n"); if (!proc_net_rpc) proc_net_rpc = proc_mkdir("rpc", init_net.proc_net); sn = net_generic(net, sunrpc_net_id); sn->proc_net_rpc = proc_mkdir("rpc", net->proc_net); if (sn->proc_net_rpc == NULL) return -ENOMEM; return 0; } void rpc_proc_exit(void) void rpc_proc_exit(struct net *net) { dprintk("RPC: unregistering /proc/net/rpc\n"); if (proc_net_rpc) { proc_net_rpc = NULL; remove_proc_entry("rpc", init_net.proc_net); } remove_proc_entry("rpc", net->proc_net); }
net/sunrpc/sunrpc_syms.c +10 −6 Original line number Diff line number Diff line Loading @@ -28,11 +28,21 @@ int sunrpc_net_id; static __net_init int sunrpc_init_net(struct net *net) { int err; err = rpc_proc_init(net); if (err) goto err_proc; return 0; err_proc: return err; } static __net_exit void sunrpc_exit_net(struct net *net) { rpc_proc_exit(net); } static struct pernet_operations sunrpc_net_ops = { Loading Loading @@ -66,9 +76,6 @@ init_sunrpc(void) goto out4; #ifdef RPC_DEBUG rpc_register_sysctl(); #endif #ifdef CONFIG_PROC_FS rpc_proc_init(); #endif cache_register(&ip_map_cache); cache_register(&unix_gid_cache); Loading Loading @@ -100,9 +107,6 @@ cleanup_sunrpc(void) unregister_pernet_subsys(&sunrpc_net_ops); #ifdef RPC_DEBUG rpc_unregister_sysctl(); #endif #ifdef CONFIG_PROC_FS rpc_proc_exit(); #endif rcu_barrier(); /* Wait for completion of call_rcu()'s */ } Loading