diff options
Diffstat (limited to 'fs/nfsd/nfsctl.c')
-rw-r--r-- | fs/nfsd/nfsctl.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c index 64c24af8d7ea..2c53be6d3579 100644 --- a/fs/nfsd/nfsctl.c +++ b/fs/nfsd/nfsctl.c | |||
@@ -13,12 +13,14 @@ | |||
13 | #include <linux/sunrpc/clnt.h> | 13 | #include <linux/sunrpc/clnt.h> |
14 | #include <linux/sunrpc/gss_api.h> | 14 | #include <linux/sunrpc/gss_api.h> |
15 | #include <linux/sunrpc/gss_krb5_enctypes.h> | 15 | #include <linux/sunrpc/gss_krb5_enctypes.h> |
16 | #include <linux/sunrpc/rpc_pipe_fs.h> | ||
16 | #include <linux/module.h> | 17 | #include <linux/module.h> |
17 | 18 | ||
18 | #include "idmap.h" | 19 | #include "idmap.h" |
19 | #include "nfsd.h" | 20 | #include "nfsd.h" |
20 | #include "cache.h" | 21 | #include "cache.h" |
21 | #include "fault_inject.h" | 22 | #include "fault_inject.h" |
23 | #include "netns.h" | ||
22 | 24 | ||
23 | /* | 25 | /* |
24 | * We have a single directory with several nodes in it. | 26 | * We have a single directory with several nodes in it. |
@@ -1124,14 +1126,26 @@ static int create_proc_exports_entry(void) | |||
1124 | } | 1126 | } |
1125 | #endif | 1127 | #endif |
1126 | 1128 | ||
1129 | int nfsd_net_id; | ||
1130 | static struct pernet_operations nfsd_net_ops = { | ||
1131 | .id = &nfsd_net_id, | ||
1132 | .size = sizeof(struct nfsd_net), | ||
1133 | }; | ||
1134 | |||
1127 | static int __init init_nfsd(void) | 1135 | static int __init init_nfsd(void) |
1128 | { | 1136 | { |
1129 | int retval; | 1137 | int retval; |
1130 | printk(KERN_INFO "Installing knfsd (copyright (C) 1996 okir@monad.swb.de).\n"); | 1138 | printk(KERN_INFO "Installing knfsd (copyright (C) 1996 okir@monad.swb.de).\n"); |
1131 | 1139 | ||
1132 | retval = nfsd4_init_slabs(); | 1140 | retval = register_cld_notifier(); |
1133 | if (retval) | 1141 | if (retval) |
1134 | return retval; | 1142 | return retval; |
1143 | retval = register_pernet_subsys(&nfsd_net_ops); | ||
1144 | if (retval < 0) | ||
1145 | goto out_unregister_notifier; | ||
1146 | retval = nfsd4_init_slabs(); | ||
1147 | if (retval) | ||
1148 | goto out_unregister_pernet; | ||
1135 | nfs4_state_init(); | 1149 | nfs4_state_init(); |
1136 | retval = nfsd_fault_inject_init(); /* nfsd fault injection controls */ | 1150 | retval = nfsd_fault_inject_init(); /* nfsd fault injection controls */ |
1137 | if (retval) | 1151 | if (retval) |
@@ -1169,6 +1183,10 @@ out_free_stat: | |||
1169 | nfsd_fault_inject_cleanup(); | 1183 | nfsd_fault_inject_cleanup(); |
1170 | out_free_slabs: | 1184 | out_free_slabs: |
1171 | nfsd4_free_slabs(); | 1185 | nfsd4_free_slabs(); |
1186 | out_unregister_pernet: | ||
1187 | unregister_pernet_subsys(&nfsd_net_ops); | ||
1188 | out_unregister_notifier: | ||
1189 | unregister_cld_notifier(); | ||
1172 | return retval; | 1190 | return retval; |
1173 | } | 1191 | } |
1174 | 1192 | ||
@@ -1184,6 +1202,8 @@ static void __exit exit_nfsd(void) | |||
1184 | nfsd4_free_slabs(); | 1202 | nfsd4_free_slabs(); |
1185 | nfsd_fault_inject_cleanup(); | 1203 | nfsd_fault_inject_cleanup(); |
1186 | unregister_filesystem(&nfsd_fs_type); | 1204 | unregister_filesystem(&nfsd_fs_type); |
1205 | unregister_pernet_subsys(&nfsd_net_ops); | ||
1206 | unregister_cld_notifier(); | ||
1187 | } | 1207 | } |
1188 | 1208 | ||
1189 | MODULE_AUTHOR("Olaf Kirch <okir@monad.swb.de>"); | 1209 | MODULE_AUTHOR("Olaf Kirch <okir@monad.swb.de>"); |