From b7e222016033b1024e0e17c998f54ccbbe834b5a Mon Sep 17 00:00:00 2001 From: Stanislav Kinsbursky Date: Wed, 11 Apr 2012 15:13:35 +0400 Subject: [PATCH] --- yaml --- r: 309800 b: refs/heads/master c: 5717e0128422b96be6aa414fa752ec90c1cd31e9 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/nfsd/nfsctl.c | 27 +++++++++++++++++++++------ 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index ad5cc4ca1808..dc0b9aa110e3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e5f06f720eff24e32f1cc08ec03bcc8c4b2d2934 +refs/heads/master: 5717e0128422b96be6aa414fa752ec90c1cd31e9 diff --git a/trunk/fs/nfsd/nfsctl.c b/trunk/fs/nfsd/nfsctl.c index b14417740816..08cd87a9fb40 100644 --- a/trunk/fs/nfsd/nfsctl.c +++ b/trunk/fs/nfsd/nfsctl.c @@ -1137,7 +1137,28 @@ static int create_proc_exports_entry(void) #endif int nfsd_net_id; + +static __net_init int nfsd_init_net(struct net *net) +{ + int retval; + + retval = nfsd_export_init(net); + if (retval) + goto out_export_error; + return 0; + +out_export_error: + return retval; +} + +static __net_exit void nfsd_exit_net(struct net *net) +{ + nfsd_export_shutdown(net); +} + static struct pernet_operations nfsd_net_ops = { + .init = nfsd_init_net, + .exit = nfsd_exit_net, .id = &nfsd_net_id, .size = sizeof(struct nfsd_net), }; @@ -1164,9 +1185,6 @@ static int __init init_nfsd(void) retval = nfsd_reply_cache_init(); if (retval) goto out_free_stat; - retval = nfsd_export_init(&init_net); - if (retval) - goto out_free_cache; nfsd_lockd_init(); /* lockd->nfsd callbacks */ retval = nfsd_idmap_init(); if (retval) @@ -1185,8 +1203,6 @@ static int __init init_nfsd(void) nfsd_idmap_shutdown(); out_free_lockd: nfsd_lockd_shutdown(); - nfsd_export_shutdown(&init_net); -out_free_cache: nfsd_reply_cache_shutdown(); out_free_stat: nfsd_stat_shutdown(); @@ -1202,7 +1218,6 @@ static int __init init_nfsd(void) static void __exit exit_nfsd(void) { - nfsd_export_shutdown(&init_net); nfsd_reply_cache_shutdown(); remove_proc_entry("fs/nfs/exports", NULL); remove_proc_entry("fs/nfs", NULL);