Loading fs/nfs/Makefile +2 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,8 @@ obj-$(CONFIG_NFS_FS) += nfs.o CFLAGS_nfstrace.o += -I$(src) nfs-y := client.o dir.o file.o getroot.o inode.o super.o \ io.o direct.o pagelist.o read.o symlink.o unlink.o \ write.o namespace.o mount_clnt.o nfstrace.o export.o write.o namespace.o mount_clnt.o nfstrace.o \ export.o sysfs.o nfs-$(CONFIG_ROOT_NFS) += nfsroot.o nfs-$(CONFIG_SYSCTL) += sysctl.o nfs-$(CONFIG_NFS_FSCACHE) += fscache.o fscache-index.o Loading fs/nfs/client.c +15 −2 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ #include "pnfs.h" #include "nfs.h" #include "netns.h" #include "sysfs.h" #define NFSDBG_FACILITY NFSDBG_CLIENT Loading Loading @@ -192,7 +193,7 @@ struct nfs_client *nfs_alloc_client(const struct nfs_client_initdata *cl_init) EXPORT_SYMBOL_GPL(nfs_alloc_client); #if IS_ENABLED(CONFIG_NFS_V4) void nfs_cleanup_cb_ident_idr(struct net *net) static void nfs_cleanup_cb_ident_idr(struct net *net) { struct nfs_net *nn = net_generic(net, nfs_net_id); Loading @@ -214,7 +215,7 @@ static void pnfs_init_server(struct nfs_server *server) } #else void nfs_cleanup_cb_ident_idr(struct net *net) static void nfs_cleanup_cb_ident_idr(struct net *net) { } Loading Loading @@ -1072,6 +1073,18 @@ void nfs_clients_init(struct net *net) #endif spin_lock_init(&nn->nfs_client_lock); nn->boot_time = ktime_get_real(); nfs_netns_sysfs_setup(nn, net); } void nfs_clients_exit(struct net *net) { struct nfs_net *nn = net_generic(net, nfs_net_id); nfs_netns_sysfs_destroy(nn); nfs_cleanup_cb_ident_idr(net); WARN_ON_ONCE(!list_empty(&nn->nfs_client_list)); WARN_ON_ONCE(!list_empty(&nn->nfs_volume_list)); } #ifdef CONFIG_PROC_FS Loading fs/nfs/inode.c +9 −5 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ #include "pnfs.h" #include "nfs.h" #include "netns.h" #include "sysfs.h" #include "nfstrace.h" Loading Loading @@ -2167,12 +2168,8 @@ static int nfs_net_init(struct net *net) static void nfs_net_exit(struct net *net) { struct nfs_net *nn = net_generic(net, nfs_net_id); nfs_fs_proc_net_exit(net); nfs_cleanup_cb_ident_idr(net); WARN_ON_ONCE(!list_empty(&nn->nfs_client_list)); WARN_ON_ONCE(!list_empty(&nn->nfs_volume_list)); nfs_clients_exit(net); } static struct pernet_operations nfs_net_ops = { Loading @@ -2189,6 +2186,10 @@ static int __init init_nfs_fs(void) { int err; err = nfs_sysfs_init(); if (err < 0) goto out10; err = register_pernet_subsys(&nfs_net_ops); if (err < 0) goto out9; Loading Loading @@ -2252,6 +2253,8 @@ static int __init init_nfs_fs(void) out8: unregister_pernet_subsys(&nfs_net_ops); out9: nfs_sysfs_exit(); out10: return err; } Loading @@ -2268,6 +2271,7 @@ static void __exit exit_nfs_fs(void) unregister_nfs_fs(); nfs_fs_proc_exit(); nfsiod_stop(); nfs_sysfs_exit(); } /* Not quite true; I just maintain it */ Loading fs/nfs/internal.h +1 −1 Original line number Diff line number Diff line Loading @@ -158,6 +158,7 @@ extern void nfs_umount(const struct nfs_mount_request *info); /* client.c */ extern const struct rpc_program nfs_program; extern void nfs_clients_init(struct net *net); extern void nfs_clients_exit(struct net *net); extern struct nfs_client *nfs_alloc_client(const struct nfs_client_initdata *); int nfs_create_rpc_client(struct nfs_client *, const struct nfs_client_initdata *, rpc_authflavor_t); struct nfs_client *nfs_get_client(const struct nfs_client_initdata *); Loading @@ -170,7 +171,6 @@ int nfs_init_server_rpcclient(struct nfs_server *, const struct rpc_timeout *t, struct nfs_server *nfs_alloc_server(void); void nfs_server_copy_userdata(struct nfs_server *, struct nfs_server *); extern void nfs_cleanup_cb_ident_idr(struct net *); extern void nfs_put_client(struct nfs_client *); extern void nfs_free_client(struct nfs_client *); extern struct nfs_client *nfs4_find_client_ident(struct net *, int); Loading fs/nfs/netns.h +3 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ struct bl_dev_msg { uint32_t major, minor; }; struct nfs_netns_client; struct nfs_net { struct cache_detail *nfs_dns_resolve; struct rpc_pipe *bl_device_pipe; Loading @@ -29,6 +31,7 @@ struct nfs_net { unsigned short nfs_callback_tcpport6; int cb_users[NFS4_MAX_MINOR_VERSION + 1]; #endif struct nfs_netns_client *nfs_client; spinlock_t nfs_client_lock; ktime_t boot_time; #ifdef CONFIG_PROC_FS Loading Loading
fs/nfs/Makefile +2 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,8 @@ obj-$(CONFIG_NFS_FS) += nfs.o CFLAGS_nfstrace.o += -I$(src) nfs-y := client.o dir.o file.o getroot.o inode.o super.o \ io.o direct.o pagelist.o read.o symlink.o unlink.o \ write.o namespace.o mount_clnt.o nfstrace.o export.o write.o namespace.o mount_clnt.o nfstrace.o \ export.o sysfs.o nfs-$(CONFIG_ROOT_NFS) += nfsroot.o nfs-$(CONFIG_SYSCTL) += sysctl.o nfs-$(CONFIG_NFS_FSCACHE) += fscache.o fscache-index.o Loading
fs/nfs/client.c +15 −2 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ #include "pnfs.h" #include "nfs.h" #include "netns.h" #include "sysfs.h" #define NFSDBG_FACILITY NFSDBG_CLIENT Loading Loading @@ -192,7 +193,7 @@ struct nfs_client *nfs_alloc_client(const struct nfs_client_initdata *cl_init) EXPORT_SYMBOL_GPL(nfs_alloc_client); #if IS_ENABLED(CONFIG_NFS_V4) void nfs_cleanup_cb_ident_idr(struct net *net) static void nfs_cleanup_cb_ident_idr(struct net *net) { struct nfs_net *nn = net_generic(net, nfs_net_id); Loading @@ -214,7 +215,7 @@ static void pnfs_init_server(struct nfs_server *server) } #else void nfs_cleanup_cb_ident_idr(struct net *net) static void nfs_cleanup_cb_ident_idr(struct net *net) { } Loading Loading @@ -1072,6 +1073,18 @@ void nfs_clients_init(struct net *net) #endif spin_lock_init(&nn->nfs_client_lock); nn->boot_time = ktime_get_real(); nfs_netns_sysfs_setup(nn, net); } void nfs_clients_exit(struct net *net) { struct nfs_net *nn = net_generic(net, nfs_net_id); nfs_netns_sysfs_destroy(nn); nfs_cleanup_cb_ident_idr(net); WARN_ON_ONCE(!list_empty(&nn->nfs_client_list)); WARN_ON_ONCE(!list_empty(&nn->nfs_volume_list)); } #ifdef CONFIG_PROC_FS Loading
fs/nfs/inode.c +9 −5 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ #include "pnfs.h" #include "nfs.h" #include "netns.h" #include "sysfs.h" #include "nfstrace.h" Loading Loading @@ -2167,12 +2168,8 @@ static int nfs_net_init(struct net *net) static void nfs_net_exit(struct net *net) { struct nfs_net *nn = net_generic(net, nfs_net_id); nfs_fs_proc_net_exit(net); nfs_cleanup_cb_ident_idr(net); WARN_ON_ONCE(!list_empty(&nn->nfs_client_list)); WARN_ON_ONCE(!list_empty(&nn->nfs_volume_list)); nfs_clients_exit(net); } static struct pernet_operations nfs_net_ops = { Loading @@ -2189,6 +2186,10 @@ static int __init init_nfs_fs(void) { int err; err = nfs_sysfs_init(); if (err < 0) goto out10; err = register_pernet_subsys(&nfs_net_ops); if (err < 0) goto out9; Loading Loading @@ -2252,6 +2253,8 @@ static int __init init_nfs_fs(void) out8: unregister_pernet_subsys(&nfs_net_ops); out9: nfs_sysfs_exit(); out10: return err; } Loading @@ -2268,6 +2271,7 @@ static void __exit exit_nfs_fs(void) unregister_nfs_fs(); nfs_fs_proc_exit(); nfsiod_stop(); nfs_sysfs_exit(); } /* Not quite true; I just maintain it */ Loading
fs/nfs/internal.h +1 −1 Original line number Diff line number Diff line Loading @@ -158,6 +158,7 @@ extern void nfs_umount(const struct nfs_mount_request *info); /* client.c */ extern const struct rpc_program nfs_program; extern void nfs_clients_init(struct net *net); extern void nfs_clients_exit(struct net *net); extern struct nfs_client *nfs_alloc_client(const struct nfs_client_initdata *); int nfs_create_rpc_client(struct nfs_client *, const struct nfs_client_initdata *, rpc_authflavor_t); struct nfs_client *nfs_get_client(const struct nfs_client_initdata *); Loading @@ -170,7 +171,6 @@ int nfs_init_server_rpcclient(struct nfs_server *, const struct rpc_timeout *t, struct nfs_server *nfs_alloc_server(void); void nfs_server_copy_userdata(struct nfs_server *, struct nfs_server *); extern void nfs_cleanup_cb_ident_idr(struct net *); extern void nfs_put_client(struct nfs_client *); extern void nfs_free_client(struct nfs_client *); extern struct nfs_client *nfs4_find_client_ident(struct net *, int); Loading
fs/nfs/netns.h +3 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ struct bl_dev_msg { uint32_t major, minor; }; struct nfs_netns_client; struct nfs_net { struct cache_detail *nfs_dns_resolve; struct rpc_pipe *bl_device_pipe; Loading @@ -29,6 +31,7 @@ struct nfs_net { unsigned short nfs_callback_tcpport6; int cb_users[NFS4_MAX_MINOR_VERSION + 1]; #endif struct nfs_netns_client *nfs_client; spinlock_t nfs_client_lock; ktime_t boot_time; #ifdef CONFIG_PROC_FS Loading