Loading include/linux/sunrpc/cache.h +2 −0 Original line number Diff line number Diff line Loading @@ -197,7 +197,9 @@ extern void cache_purge(struct cache_detail *detail); #define NEVER (0x7FFFFFFF) extern void __init cache_initialize(void); extern int cache_register(struct cache_detail *cd); extern int cache_register_net(struct cache_detail *cd, struct net *net); extern void cache_unregister(struct cache_detail *cd); extern void cache_unregister_net(struct cache_detail *cd, struct net *net); extern int sunrpc_cache_register_pipefs(struct dentry *parent, const char *, mode_t, struct cache_detail *); Loading net/sunrpc/cache.c +19 −8 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ #include <linux/sunrpc/cache.h> #include <linux/sunrpc/stats.h> #include <linux/sunrpc/rpc_pipe_fs.h> #include <net/net_namespace.h> #define RPCDBG_FACILITY RPCDBG_CACHE Loading Loading @@ -1537,7 +1538,7 @@ static const struct file_operations cache_flush_operations_procfs = { .release = release_flush_procfs, }; static void remove_cache_proc_entries(struct cache_detail *cd) static void remove_cache_proc_entries(struct cache_detail *cd, struct net *net) { if (cd->u.procfs.proc_ent == NULL) return; Loading @@ -1552,7 +1553,7 @@ static void remove_cache_proc_entries(struct cache_detail *cd) } #ifdef CONFIG_PROC_FS static int create_cache_proc_entries(struct cache_detail *cd) static int create_cache_proc_entries(struct cache_detail *cd, struct net *net) { struct proc_dir_entry *p; Loading Loading @@ -1587,11 +1588,11 @@ static int create_cache_proc_entries(struct cache_detail *cd) } return 0; out_nomem: remove_cache_proc_entries(cd); remove_cache_proc_entries(cd, net); return -ENOMEM; } #else /* CONFIG_PROC_FS */ static int create_cache_proc_entries(struct cache_detail *cd) static int create_cache_proc_entries(struct cache_detail *cd, struct net *net) { return 0; } Loading @@ -1602,23 +1603,33 @@ void __init cache_initialize(void) INIT_DELAYED_WORK_DEFERRABLE(&cache_cleaner, do_cache_clean); } int cache_register(struct cache_detail *cd) int cache_register_net(struct cache_detail *cd, struct net *net) { int ret; sunrpc_init_cache_detail(cd); ret = create_cache_proc_entries(cd); ret = create_cache_proc_entries(cd, net); if (ret) sunrpc_destroy_cache_detail(cd); return ret; } int cache_register(struct cache_detail *cd) { return cache_register_net(cd, &init_net); } EXPORT_SYMBOL_GPL(cache_register); void cache_unregister(struct cache_detail *cd) void cache_unregister_net(struct cache_detail *cd, struct net *net) { remove_cache_proc_entries(cd); remove_cache_proc_entries(cd, net); sunrpc_destroy_cache_detail(cd); } void cache_unregister(struct cache_detail *cd) { cache_unregister_net(cd, &init_net); } EXPORT_SYMBOL_GPL(cache_unregister); static ssize_t cache_read_pipefs(struct file *filp, char __user *buf, Loading Loading
include/linux/sunrpc/cache.h +2 −0 Original line number Diff line number Diff line Loading @@ -197,7 +197,9 @@ extern void cache_purge(struct cache_detail *detail); #define NEVER (0x7FFFFFFF) extern void __init cache_initialize(void); extern int cache_register(struct cache_detail *cd); extern int cache_register_net(struct cache_detail *cd, struct net *net); extern void cache_unregister(struct cache_detail *cd); extern void cache_unregister_net(struct cache_detail *cd, struct net *net); extern int sunrpc_cache_register_pipefs(struct dentry *parent, const char *, mode_t, struct cache_detail *); Loading
net/sunrpc/cache.c +19 −8 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ #include <linux/sunrpc/cache.h> #include <linux/sunrpc/stats.h> #include <linux/sunrpc/rpc_pipe_fs.h> #include <net/net_namespace.h> #define RPCDBG_FACILITY RPCDBG_CACHE Loading Loading @@ -1537,7 +1538,7 @@ static const struct file_operations cache_flush_operations_procfs = { .release = release_flush_procfs, }; static void remove_cache_proc_entries(struct cache_detail *cd) static void remove_cache_proc_entries(struct cache_detail *cd, struct net *net) { if (cd->u.procfs.proc_ent == NULL) return; Loading @@ -1552,7 +1553,7 @@ static void remove_cache_proc_entries(struct cache_detail *cd) } #ifdef CONFIG_PROC_FS static int create_cache_proc_entries(struct cache_detail *cd) static int create_cache_proc_entries(struct cache_detail *cd, struct net *net) { struct proc_dir_entry *p; Loading Loading @@ -1587,11 +1588,11 @@ static int create_cache_proc_entries(struct cache_detail *cd) } return 0; out_nomem: remove_cache_proc_entries(cd); remove_cache_proc_entries(cd, net); return -ENOMEM; } #else /* CONFIG_PROC_FS */ static int create_cache_proc_entries(struct cache_detail *cd) static int create_cache_proc_entries(struct cache_detail *cd, struct net *net) { return 0; } Loading @@ -1602,23 +1603,33 @@ void __init cache_initialize(void) INIT_DELAYED_WORK_DEFERRABLE(&cache_cleaner, do_cache_clean); } int cache_register(struct cache_detail *cd) int cache_register_net(struct cache_detail *cd, struct net *net) { int ret; sunrpc_init_cache_detail(cd); ret = create_cache_proc_entries(cd); ret = create_cache_proc_entries(cd, net); if (ret) sunrpc_destroy_cache_detail(cd); return ret; } int cache_register(struct cache_detail *cd) { return cache_register_net(cd, &init_net); } EXPORT_SYMBOL_GPL(cache_register); void cache_unregister(struct cache_detail *cd) void cache_unregister_net(struct cache_detail *cd, struct net *net) { remove_cache_proc_entries(cd); remove_cache_proc_entries(cd, net); sunrpc_destroy_cache_detail(cd); } void cache_unregister(struct cache_detail *cd) { cache_unregister_net(cd, &init_net); } EXPORT_SYMBOL_GPL(cache_unregister); static ssize_t cache_read_pipefs(struct file *filp, char __user *buf, Loading