Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 129d1977 authored by Bryan Schumaker's avatar Bryan Schumaker Committed by Trond Myklebust
Browse files

NFS: Create an init_nfs_v4() function



I want to initialize all of NFS v4 in a single function that will
eventually be used as the v4 module init function.

Signed-off-by: default avatarBryan Schumaker <bjschuma@netapp.com>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 73a79706
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ nfs-$(CONFIG_NFS_V2) += proc.o nfs2xdr.o
nfs-$(CONFIG_NFS_V3)	+= nfs3proc.o nfs3xdr.o
nfs-$(CONFIG_NFS_V3_ACL)	+= nfs3acl.o
nfs-$(CONFIG_NFS_V4)	+= nfs4proc.o nfs4xdr.o nfs4state.o nfs4renewd.o \
			   delegation.o idmap.o \
			   nfs4super.o delegation.o idmap.o \
			   callback.o callback_xdr.o callback_proc.o \
			   nfs4namespace.o
nfs-$(CONFIG_NFS_V4_1)	+= pnfs.o pnfs_dev.o
+37 −30
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@
#include <linux/lockd/bind.h>
#include <linux/seq_file.h>
#include <linux/mount.h>
#include <linux/nfs_idmap.h>
#include <linux/vfs.h>
#include <linux/inet.h>
#include <linux/nfs_xdr.h>
@@ -1628,87 +1627,96 @@ static int __init init_nfs_fs(void)
{
	int err;

	err = nfs_idmap_init();
	if (err < 0)
		goto out10;

	err = nfs_dns_resolver_init();
	if (err < 0)
		goto out9;
		goto out11;

	err = register_pernet_subsys(&nfs_net_ops);
	if (err < 0)
		goto out8;
		goto out10;

	err = nfs_fscache_register();
	if (err < 0)
		goto out7;
		goto out9;

	err = nfsiod_start();
	if (err)
		goto out6;
		goto out8;

	err = nfs_fs_proc_init();
	if (err)
		goto out5;
		goto out7;

	err = nfs_init_nfspagecache();
	if (err)
		goto out4;
		goto out6;

	err = nfs_init_inodecache();
	if (err)
		goto out3;
		goto out5;

	err = nfs_init_readpagecache();
	if (err)
		goto out2;
		goto out4;

	err = nfs_init_writepagecache();
	if (err)
		goto out1;
		goto out3;

	err = nfs_init_directcache();
	if (err)
		goto out0;
		goto out2;

#ifdef CONFIG_PROC_FS
	rpc_proc_register(&init_net, &nfs_rpcstat);
#endif

#ifdef CONFIG_NFS_V4
	err = init_nfs_v4();
	if (err)
		goto out1;
#endif

	if ((err = register_nfs_fs()) != 0)
		goto out;
		goto out0;

	return 0;
out:
out0:
#ifdef CONFIG_NFS_V4
	exit_nfs_v4();
out1:
#endif
#ifdef CONFIG_PROC_FS
	rpc_proc_unregister(&init_net, "nfs");
#endif
	nfs_destroy_directcache();
out0:
	nfs_destroy_writepagecache();
out1:
	nfs_destroy_readpagecache();
out2:
	nfs_destroy_inodecache();
	nfs_destroy_writepagecache();
out3:
	nfs_destroy_nfspagecache();
	nfs_destroy_readpagecache();
out4:
	nfs_fs_proc_exit();
	nfs_destroy_inodecache();
out5:
	nfsiod_stop();
	nfs_destroy_nfspagecache();
out6:
	nfs_fscache_unregister();
	nfs_fs_proc_exit();
out7:
	unregister_pernet_subsys(&nfs_net_ops);
	nfsiod_stop();
out8:
	nfs_dns_resolver_destroy();
	nfs_fscache_unregister();
out9:
	nfs_idmap_quit();
	unregister_pernet_subsys(&nfs_net_ops);
out10:
	nfs_dns_resolver_destroy();
out11:
	return err;
}

static void __exit exit_nfs_fs(void)
{
#ifdef CONFIG_NFS_V4
	exit_nfs_v4();
#endif
	nfs_destroy_directcache();
	nfs_destroy_writepagecache();
	nfs_destroy_readpagecache();
@@ -1717,7 +1725,6 @@ static void __exit exit_nfs_fs(void)
	nfs_fscache_unregister();
	unregister_pernet_subsys(&nfs_net_ops);
	nfs_dns_resolver_destroy();
	nfs_idmap_quit();
#ifdef CONFIG_PROC_FS
	rpc_proc_unregister(&init_net, "nfs");
#endif
+4 −0
Original line number Diff line number Diff line
@@ -364,6 +364,10 @@ extern void nfs4_free_lock_state(struct nfs_server *server, struct nfs4_lock_sta

extern const nfs4_stateid zero_stateid;

/* nfs4super.c */
int init_nfs_v4(void);
void exit_nfs_v4(void);

/* nfs4xdr.c */
extern struct rpc_procinfo nfs4_procedures[];

fs/nfs/nfs4super.c

0 → 100644
+23 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2012 Bryan Schumaker <bjschuma@netapp.com>
 */
#include <linux/init.h>
#include <linux/nfs_idmap.h>

int __init init_nfs_v4(void)
{
	int err;

	err = nfs_idmap_init();
	if (err)
		goto out;

	return 0;
out:
	return err;
}

void __exit exit_nfs_v4(void)
{
	nfs_idmap_quit();
}