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

Commit 1e140567 authored by NeilBrown's avatar NeilBrown Committed by J. Bruce Fields
Browse files

nfsd: allow deprecated interface to be compiled out.



Add CONFIG_NFSD_DEPRECATED, default to y.
Only include deprecated interface if this is defined.
This allows distros to remove this interface before the official
removal, and allows developers to test without it.

Signed-off-by: default avatarNeilBrown <neilb@suse.de>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent c67874f9
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -29,10 +29,7 @@ obj-$(CONFIG_EVENTFD) += eventfd.o
obj-$(CONFIG_AIO)               += aio.o
obj-$(CONFIG_FILE_LOCKING)      += locks.o
obj-$(CONFIG_COMPAT)		+= compat.o compat_ioctl.o

nfsd-$(CONFIG_NFSD)		:= nfsctl.o
obj-y				+= $(nfsd-y) $(nfsd-m)

obj-$(CONFIG_NFSD_DEPRECATED)	+= nfsctl.o
obj-$(CONFIG_BINFMT_AOUT)	+= binfmt_aout.o
obj-$(CONFIG_BINFMT_EM86)	+= binfmt_em86.o
obj-$(CONFIG_BINFMT_MISC)	+= binfmt_misc.o
+1 −1
Original line number Diff line number Diff line
@@ -1963,7 +1963,7 @@ asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds,
}
#endif /* HAVE_SET_RESTORE_SIGMASK */

#if defined(CONFIG_NFSD) || defined(CONFIG_NFSD_MODULE)
#if (defined(CONFIG_NFSD) || defined(CONFIG_NFSD_MODULE)) && !defined(CONFIG_NFSD_DEPRECATED)
/* Stuff for NFS server syscalls... */
struct compat_nfsctl_svc {
	u16			svc32_port;
+12 −0
Original line number Diff line number Diff line
@@ -28,6 +28,18 @@ config NFSD

	  If unsure, say N.

config NFSD_DEPRECATED
	bool "Include support for deprecated syscall interface to NFSD"
	depends on NFSD
	default y
	help
	  The syscall interface to nfsd was obsoleted in 2.6.0 by a new
	  filesystem based interface.  The old interface is due for removal
	  in 2.6.40.  If you wish to remove the interface before then
	  say N.

	  In unsure, say Y.

config NFSD_V2_ACL
	bool
	depends on NFSD
+19 −3
Original line number Diff line number Diff line
@@ -28,9 +28,6 @@
typedef struct auth_domain	svc_client;
typedef struct svc_export	svc_export;

static void		exp_do_unexport(svc_export *unexp);
static int		exp_verify_string(char *cp, int max);

/*
 * We have two caches.
 * One maps client+vfsmnt+dentry to export options - the export map
@@ -802,6 +799,7 @@ exp_find_key(svc_client *clp, int fsid_type, u32 *fsidv, struct cache_req *reqp)
	return ek;
}

#ifdef CONFIG_NFSD_DEPRECATED
static int exp_set_key(svc_client *clp, int fsid_type, u32 *fsidv,
		       struct svc_export *exp)
{
@@ -852,6 +850,7 @@ exp_get_fsid_key(svc_client *clp, int fsid)

	return exp_find_key(clp, FSID_NUM, fsidv, NULL);
}
#endif

static svc_export *exp_get_by_name(svc_client *clp, const struct path *path,
				     struct cache_req *reqp)
@@ -893,6 +892,7 @@ static struct svc_export *exp_parent(svc_client *clp, struct path *path)
	return exp;
}

#ifdef CONFIG_NFSD_DEPRECATED
/*
 * Hashtable locking. Write locks are placed only by user processes
 * wanting to modify export information.
@@ -925,6 +925,19 @@ exp_writeunlock(void)
{
	up_write(&hash_sem);
}
#else

/* hash_sem not needed once deprecated interface is removed */
void exp_readlock(void) {}
static inline void exp_writelock(void){}
void exp_readunlock(void) {}
static inline void exp_writeunlock(void){}

#endif

#ifdef CONFIG_NFSD_DEPRECATED
static void		exp_do_unexport(svc_export *unexp);
static int		exp_verify_string(char *cp, int max);

static void exp_fsid_unhash(struct svc_export *exp)
{
@@ -1147,6 +1160,7 @@ exp_unexport(struct nfsctl_export *nxp)
	exp_writeunlock();
	return err;
}
#endif /* CONFIG_NFSD_DEPRECATED */

/*
 * Obtain the root fh on behalf of a client.
@@ -1529,6 +1543,7 @@ const struct seq_operations nfs_exports_op = {
	.show	= e_show,
};

#ifdef CONFIG_NFSD_DEPRECATED
/*
 * Add or modify a client.
 * Change requests may involve the list of host addresses. The list of
@@ -1618,6 +1633,7 @@ exp_verify_string(char *cp, int max)
	printk(KERN_NOTICE "nfsd: couldn't validate string %s\n", cp);
	return 0;
}
#endif /* CONFIG_NFSD_DEPRECATED */

/*
 * Initialize the exports module.
+10 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
 */
enum {
	NFSD_Root = 1,
#ifdef CONFIG_NFSD_DEPRECATED
	NFSD_Svc,
	NFSD_Add,
	NFSD_Del,
@@ -29,6 +30,7 @@ enum {
	NFSD_Unexport,
	NFSD_Getfd,
	NFSD_Getfs,
#endif
	NFSD_List,
	NFSD_Export_features,
	NFSD_Fh,
@@ -54,6 +56,7 @@ enum {
/*
 * write() for these nodes.
 */
#ifdef CONFIG_NFSD_DEPRECATED
static ssize_t write_svc(struct file *file, char *buf, size_t size);
static ssize_t write_add(struct file *file, char *buf, size_t size);
static ssize_t write_del(struct file *file, char *buf, size_t size);
@@ -61,6 +64,7 @@ static ssize_t write_export(struct file *file, char *buf, size_t size);
static ssize_t write_unexport(struct file *file, char *buf, size_t size);
static ssize_t write_getfd(struct file *file, char *buf, size_t size);
static ssize_t write_getfs(struct file *file, char *buf, size_t size);
#endif
static ssize_t write_filehandle(struct file *file, char *buf, size_t size);
static ssize_t write_unlock_ip(struct file *file, char *buf, size_t size);
static ssize_t write_unlock_fs(struct file *file, char *buf, size_t size);
@@ -76,6 +80,7 @@ static ssize_t write_recoverydir(struct file *file, char *buf, size_t size);
#endif

static ssize_t (*write_op[])(struct file *, char *, size_t) = {
#ifdef CONFIG_NFSD_DEPRECATED
	[NFSD_Svc] = write_svc,
	[NFSD_Add] = write_add,
	[NFSD_Del] = write_del,
@@ -83,6 +88,7 @@ static ssize_t (*write_op[])(struct file *, char *, size_t) = {
	[NFSD_Unexport] = write_unexport,
	[NFSD_Getfd] = write_getfd,
	[NFSD_Getfs] = write_getfs,
#endif
	[NFSD_Fh] = write_filehandle,
	[NFSD_FO_UnlockIP] = write_unlock_ip,
	[NFSD_FO_UnlockFS] = write_unlock_fs,
@@ -196,6 +202,7 @@ static const struct file_operations pool_stats_operations = {
 * payload - write methods
 */

#ifdef CONFIG_NFSD_DEPRECATED
/**
 * write_svc - Start kernel's NFSD server
 *
@@ -491,6 +498,7 @@ static ssize_t write_getfd(struct file *file, char *buf, size_t size)
 out:
	return err;
}
#endif /* CONFIG_NFSD_DEPRECATED */

/**
 * write_unlock_ip - Release all locks used by a client
@@ -1365,6 +1373,7 @@ static ssize_t write_recoverydir(struct file *file, char *buf, size_t size)
static int nfsd_fill_super(struct super_block * sb, void * data, int silent)
{
	static struct tree_descr nfsd_files[] = {
#ifdef CONFIG_NFSD_DEPRECATED
		[NFSD_Svc] = {".svc", &transaction_ops, S_IWUSR},
		[NFSD_Add] = {".add", &transaction_ops, S_IWUSR},
		[NFSD_Del] = {".del", &transaction_ops, S_IWUSR},
@@ -1372,6 +1381,7 @@ static int nfsd_fill_super(struct super_block * sb, void * data, int silent)
		[NFSD_Unexport] = {".unexport", &transaction_ops, S_IWUSR},
		[NFSD_Getfd] = {".getfd", &transaction_ops, S_IWUSR|S_IRUSR},
		[NFSD_Getfs] = {".getfs", &transaction_ops, S_IWUSR|S_IRUSR},
#endif
		[NFSD_List] = {"exports", &exports_operations, S_IRUGO},
		[NFSD_Export_features] = {"export_features",
					&export_features_operations, S_IRUGO},