diff options
author | Stanislav Kinsbursky <skinsbursky@parallels.com> | 2011-12-06 08:42:40 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-01-31 19:28:17 -0500 |
commit | ec7652aaf261b7dcb368344369df1e99886c7cd2 (patch) | |
tree | 0d21ca45022adb1221690cb5e368bc17d3f58531 /net/sunrpc/stats.c | |
parent | 170942726b16a1dfcc605f0b510b9663b66fa7a3 (diff) |
SUNRPC: register RPC stats /proc entries in passed network namespace context
This patch makes it possible to create NFS program entry ("/proc/net/rpc/nfs")
in passed network namespace context instead of hard-coded "init_net".
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'net/sunrpc/stats.c')
-rw-r--r-- | net/sunrpc/stats.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/net/sunrpc/stats.c b/net/sunrpc/stats.c index 80df89d957b..f0f6e7ceadd 100644 --- a/net/sunrpc/stats.c +++ b/net/sunrpc/stats.c | |||
@@ -213,28 +213,29 @@ EXPORT_SYMBOL_GPL(rpc_print_iostats); | |||
213 | * Register/unregister RPC proc files | 213 | * Register/unregister RPC proc files |
214 | */ | 214 | */ |
215 | static inline struct proc_dir_entry * | 215 | static inline struct proc_dir_entry * |
216 | do_register(const char *name, void *data, const struct file_operations *fops) | 216 | do_register(struct net *net, const char *name, void *data, |
217 | const struct file_operations *fops) | ||
217 | { | 218 | { |
218 | struct sunrpc_net *sn; | 219 | struct sunrpc_net *sn; |
219 | 220 | ||
220 | dprintk("RPC: registering /proc/net/rpc/%s\n", name); | 221 | dprintk("RPC: registering /proc/net/rpc/%s\n", name); |
221 | sn = net_generic(&init_net, sunrpc_net_id); | 222 | sn = net_generic(net, sunrpc_net_id); |
222 | return proc_create_data(name, 0, sn->proc_net_rpc, fops, data); | 223 | return proc_create_data(name, 0, sn->proc_net_rpc, fops, data); |
223 | } | 224 | } |
224 | 225 | ||
225 | struct proc_dir_entry * | 226 | struct proc_dir_entry * |
226 | rpc_proc_register(struct rpc_stat *statp) | 227 | rpc_proc_register(struct net *net, struct rpc_stat *statp) |
227 | { | 228 | { |
228 | return do_register(statp->program->name, statp, &rpc_proc_fops); | 229 | return do_register(net, statp->program->name, statp, &rpc_proc_fops); |
229 | } | 230 | } |
230 | EXPORT_SYMBOL_GPL(rpc_proc_register); | 231 | EXPORT_SYMBOL_GPL(rpc_proc_register); |
231 | 232 | ||
232 | void | 233 | void |
233 | rpc_proc_unregister(const char *name) | 234 | rpc_proc_unregister(struct net *net, const char *name) |
234 | { | 235 | { |
235 | struct sunrpc_net *sn; | 236 | struct sunrpc_net *sn; |
236 | 237 | ||
237 | sn = net_generic(&init_net, sunrpc_net_id); | 238 | sn = net_generic(net, sunrpc_net_id); |
238 | remove_proc_entry(name, sn->proc_net_rpc); | 239 | remove_proc_entry(name, sn->proc_net_rpc); |
239 | } | 240 | } |
240 | EXPORT_SYMBOL_GPL(rpc_proc_unregister); | 241 | EXPORT_SYMBOL_GPL(rpc_proc_unregister); |
@@ -242,7 +243,7 @@ EXPORT_SYMBOL_GPL(rpc_proc_unregister); | |||
242 | struct proc_dir_entry * | 243 | struct proc_dir_entry * |
243 | svc_proc_register(struct svc_stat *statp, const struct file_operations *fops) | 244 | svc_proc_register(struct svc_stat *statp, const struct file_operations *fops) |
244 | { | 245 | { |
245 | return do_register(statp->program->pg_name, statp, fops); | 246 | return do_register(&init_net, statp->program->pg_name, statp, fops); |
246 | } | 247 | } |
247 | EXPORT_SYMBOL_GPL(svc_proc_register); | 248 | EXPORT_SYMBOL_GPL(svc_proc_register); |
248 | 249 | ||