aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStanislav Kinsbursky <skinsbursky@parallels.com>2012-04-11 07:13:35 -0400
committerJ. Bruce Fields <bfields@redhat.com>2012-04-12 09:11:47 -0400
commit5717e0128422b96be6aa414fa752ec90c1cd31e9 (patch)
tree015b3be152cf778b585625810dce7c36f876e2fb
parente5f06f720eff24e32f1cc08ec03bcc8c4b2d2934 (diff)
nfsd: allocate export and expkey caches in per-net operations.
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
-rw-r--r--fs/nfsd/nfsctl.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
index b14417740816..08cd87a9fb40 100644
--- a/fs/nfsd/nfsctl.c
+++ b/fs/nfsd/nfsctl.c
@@ -1137,7 +1137,28 @@ static int create_proc_exports_entry(void)
1137#endif 1137#endif
1138 1138
1139int nfsd_net_id; 1139int nfsd_net_id;
1140
1141static __net_init int nfsd_init_net(struct net *net)
1142{
1143 int retval;
1144
1145 retval = nfsd_export_init(net);
1146 if (retval)
1147 goto out_export_error;
1148 return 0;
1149
1150out_export_error:
1151 return retval;
1152}
1153
1154static __net_exit void nfsd_exit_net(struct net *net)
1155{
1156 nfsd_export_shutdown(net);
1157}
1158
1140static struct pernet_operations nfsd_net_ops = { 1159static struct pernet_operations nfsd_net_ops = {
1160 .init = nfsd_init_net,
1161 .exit = nfsd_exit_net,
1141 .id = &nfsd_net_id, 1162 .id = &nfsd_net_id,
1142 .size = sizeof(struct nfsd_net), 1163 .size = sizeof(struct nfsd_net),
1143}; 1164};
@@ -1164,9 +1185,6 @@ static int __init init_nfsd(void)
1164 retval = nfsd_reply_cache_init(); 1185 retval = nfsd_reply_cache_init();
1165 if (retval) 1186 if (retval)
1166 goto out_free_stat; 1187 goto out_free_stat;
1167 retval = nfsd_export_init(&init_net);
1168 if (retval)
1169 goto out_free_cache;
1170 nfsd_lockd_init(); /* lockd->nfsd callbacks */ 1188 nfsd_lockd_init(); /* lockd->nfsd callbacks */
1171 retval = nfsd_idmap_init(); 1189 retval = nfsd_idmap_init();
1172 if (retval) 1190 if (retval)
@@ -1185,8 +1203,6 @@ out_free_idmap:
1185 nfsd_idmap_shutdown(); 1203 nfsd_idmap_shutdown();
1186out_free_lockd: 1204out_free_lockd:
1187 nfsd_lockd_shutdown(); 1205 nfsd_lockd_shutdown();
1188 nfsd_export_shutdown(&init_net);
1189out_free_cache:
1190 nfsd_reply_cache_shutdown(); 1206 nfsd_reply_cache_shutdown();
1191out_free_stat: 1207out_free_stat:
1192 nfsd_stat_shutdown(); 1208 nfsd_stat_shutdown();
@@ -1202,7 +1218,6 @@ out_unregister_notifier:
1202 1218
1203static void __exit exit_nfsd(void) 1219static void __exit exit_nfsd(void)
1204{ 1220{
1205 nfsd_export_shutdown(&init_net);
1206 nfsd_reply_cache_shutdown(); 1221 nfsd_reply_cache_shutdown();
1207 remove_proc_entry("fs/nfs/exports", NULL); 1222 remove_proc_entry("fs/nfs/exports", NULL);
1208 remove_proc_entry("fs/nfs", NULL); 1223 remove_proc_entry("fs/nfs", NULL);