diff options
Diffstat (limited to 'include/linux/nfsd')
| -rw-r--r-- | include/linux/nfsd/Kbuild | 6 | ||||
| -rw-r--r-- | include/linux/nfsd/const.h | 55 | ||||
| -rw-r--r-- | include/linux/nfsd/debug.h | 48 | ||||
| -rw-r--r-- | include/linux/nfsd/export.h | 163 | ||||
| -rw-r--r-- | include/linux/nfsd/nfsfh.h | 168 | ||||
| -rw-r--r-- | include/linux/nfsd/stats.h | 51 | ||||
| -rw-r--r-- | include/linux/nfsd/syscall.h | 116 | 
7 files changed, 0 insertions, 607 deletions
diff --git a/include/linux/nfsd/Kbuild b/include/linux/nfsd/Kbuild deleted file mode 100644 index 55d1467de3c..00000000000 --- a/include/linux/nfsd/Kbuild +++ /dev/null @@ -1,6 +0,0 @@ -header-y += const.h -header-y += debug.h -header-y += export.h -header-y += nfsfh.h -header-y += stats.h -header-y += syscall.h diff --git a/include/linux/nfsd/const.h b/include/linux/nfsd/const.h deleted file mode 100644 index 323f8cfa060..00000000000 --- a/include/linux/nfsd/const.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * include/linux/nfsd/const.h - * - * Various constants related to NFS. - * - * Copyright (C) 1995-1997 Olaf Kirch <okir@monad.swb.de> - */ - -#ifndef _LINUX_NFSD_CONST_H -#define _LINUX_NFSD_CONST_H - -#include <linux/nfs.h> -#include <linux/nfs2.h> -#include <linux/nfs3.h> -#include <linux/nfs4.h> - -/* - * Maximum protocol version supported by knfsd - */ -#define NFSSVC_MAXVERS		3 - -/* - * Maximum blocksizes supported by daemon under various circumstances. - */ -#define NFSSVC_MAXBLKSIZE	RPCSVC_MAXPAYLOAD -/* NFSv2 is limited by the protocol specification, see RFC 1094 */ -#define NFSSVC_MAXBLKSIZE_V2	(8*1024) - -#ifdef __KERNEL__ - -#include <linux/sunrpc/msg_prot.h> - -/* - * Largest number of bytes we need to allocate for an NFS - * call or reply.  Used to control buffer sizes.  We use - * the length of v3 WRITE, READDIR and READDIR replies - * which are an RPC header, up to 26 XDR units of reply - * data, and some page data. - * - * Note that accuracy here doesn't matter too much as the - * size is rounded up to a page size when allocating space. - */ -#define NFSD_BUFSIZE		((RPC_MAX_HEADER_WITH_AUTH+26)*XDR_UNIT + NFSSVC_MAXBLKSIZE) - -#ifdef CONFIG_NFSD_V4 -# define NFSSVC_XDRSIZE		NFS4_SVC_XDRSIZE -#elif defined(CONFIG_NFSD_V3) -# define NFSSVC_XDRSIZE		NFS3_SVC_XDRSIZE -#else -# define NFSSVC_XDRSIZE		NFS2_SVC_XDRSIZE -#endif - -#endif /* __KERNEL__ */ - -#endif /* _LINUX_NFSD_CONST_H */ diff --git a/include/linux/nfsd/debug.h b/include/linux/nfsd/debug.h deleted file mode 100644 index ee4aa91788e..00000000000 --- a/include/linux/nfsd/debug.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * linux/include/linux/nfsd/debug.h - * - * Debugging-related stuff for nfsd - * - * Copyright (C) 1995 Olaf Kirch <okir@monad.swb.de> - */ - -#ifndef LINUX_NFSD_DEBUG_H -#define LINUX_NFSD_DEBUG_H - -#include <linux/sunrpc/debug.h> - -/* - * Enable debugging for nfsd. - * Requires RPC_DEBUG. - */ -#ifdef RPC_DEBUG -# define NFSD_DEBUG		1 -#endif - -/* - * knfsd debug flags - */ -#define NFSDDBG_SOCK		0x0001 -#define NFSDDBG_FH		0x0002 -#define NFSDDBG_EXPORT		0x0004 -#define NFSDDBG_SVC		0x0008 -#define NFSDDBG_PROC		0x0010 -#define NFSDDBG_FILEOP		0x0020 -#define NFSDDBG_AUTH		0x0040 -#define NFSDDBG_REPCACHE	0x0080 -#define NFSDDBG_XDR		0x0100 -#define NFSDDBG_LOCKD		0x0200 -#define NFSDDBG_ALL		0x7FFF -#define NFSDDBG_NOCHANGE	0xFFFF - - -#ifdef __KERNEL__ -# undef ifdebug -# ifdef NFSD_DEBUG -#  define ifdebug(flag)		if (nfsd_debug & NFSDDBG_##flag) -# else -#  define ifdebug(flag)		if (0) -# endif -#endif /* __KERNEL__ */ - -#endif /* LINUX_NFSD_DEBUG_H */ diff --git a/include/linux/nfsd/export.h b/include/linux/nfsd/export.h deleted file mode 100644 index 8ae78a61eea..00000000000 --- a/include/linux/nfsd/export.h +++ /dev/null @@ -1,163 +0,0 @@ -/* - * include/linux/nfsd/export.h - *  - * Public declarations for NFS exports. The definitions for the - * syscall interface are in nfsctl.h - * - * Copyright (C) 1995-1997 Olaf Kirch <okir@monad.swb.de> - */ - -#ifndef NFSD_EXPORT_H -#define NFSD_EXPORT_H - -# include <linux/types.h> -#ifdef __KERNEL__ -# include <linux/nfsd/nfsfh.h> -#endif - -/* - * Important limits for the exports stuff. - */ -#define NFSCLNT_IDMAX		1024 -#define NFSCLNT_ADDRMAX		16 -#define NFSCLNT_KEYMAX		32 - -/* - * Export flags. - */ -#define NFSEXP_READONLY		0x0001 -#define NFSEXP_INSECURE_PORT	0x0002 -#define NFSEXP_ROOTSQUASH	0x0004 -#define NFSEXP_ALLSQUASH	0x0008 -#define NFSEXP_ASYNC		0x0010 -#define NFSEXP_GATHERED_WRITES	0x0020 -/* 40 80 100 currently unused */ -#define NFSEXP_NOHIDE		0x0200 -#define NFSEXP_NOSUBTREECHECK	0x0400 -#define	NFSEXP_NOAUTHNLM	0x0800		/* Don't authenticate NLM requests - just trust */ -#define NFSEXP_MSNFS		0x1000	/* do silly things that MS clients expect */ -#define NFSEXP_FSID		0x2000 -#define	NFSEXP_CROSSMOUNT	0x4000 -#define	NFSEXP_NOACL		0x8000	/* reserved for possible ACL related use */ -/* - * The NFSEXP_V4ROOT flag causes the kernel to give access only to NFSv4 - * clients, and only to the single directory that is the root of the - * export; further lookup and readdir operations are treated as if every - * subdirectory was a mountpoint, and ignored if they are not themselves - * exported.  This is used by nfsd and mountd to construct the NFSv4 - * pseudofilesystem, which provides access only to paths leading to each - * exported filesystem. - */ -#define	NFSEXP_V4ROOT		0x10000 -/* All flags that we claim to support.  (Note we don't support NOACL.) */ -#define NFSEXP_ALLFLAGS		0x17E3F - -/* The flags that may vary depending on security flavor: */ -#define NFSEXP_SECINFO_FLAGS	(NFSEXP_READONLY | NFSEXP_ROOTSQUASH \ -					| NFSEXP_ALLSQUASH \ -					| NFSEXP_INSECURE_PORT) - -#ifdef __KERNEL__ - -/* - * FS Locations - */ - -#define MAX_FS_LOCATIONS	128 - -struct nfsd4_fs_location { -	char *hosts; /* colon separated list of hosts */ -	char *path;  /* slash separated list of path components */ -}; - -struct nfsd4_fs_locations { -	uint32_t locations_count; -	struct nfsd4_fs_location *locations; -/* If we're not actually serving this data ourselves (only providing a - * list of replicas that do serve it) then we set "migrated": */ -	int migrated; -}; - -/* - * We keep an array of pseudoflavors with the export, in order from most - * to least preferred.  For the forseeable future, we don't expect more - * than the eight pseudoflavors null, unix, krb5, krb5i, krb5p, skpm3, - * spkm3i, and spkm3p (and using all 8 at once should be rare). - */ -#define MAX_SECINFO_LIST	8 - -struct exp_flavor_info { -	u32	pseudoflavor; -	u32	flags; -}; - -struct svc_export { -	struct cache_head	h; -	struct auth_domain *	ex_client; -	int			ex_flags; -	struct path		ex_path; -	char			*ex_pathname; -	uid_t			ex_anon_uid; -	gid_t			ex_anon_gid; -	int			ex_fsid; -	unsigned char *		ex_uuid; /* 16 byte fsid */ -	struct nfsd4_fs_locations ex_fslocs; -	int			ex_nflavors; -	struct exp_flavor_info	ex_flavors[MAX_SECINFO_LIST]; -}; - -/* an "export key" (expkey) maps a filehandlefragement to an - * svc_export for a given client.  There can be several per export, - * for the different fsid types. - */ -struct svc_expkey { -	struct cache_head	h; - -	struct auth_domain *	ek_client; -	int			ek_fsidtype; -	u32			ek_fsid[6]; - -	struct path		ek_path; -}; - -#define EX_ISSYNC(exp)		(!((exp)->ex_flags & NFSEXP_ASYNC)) -#define EX_NOHIDE(exp)		((exp)->ex_flags & NFSEXP_NOHIDE) -#define EX_WGATHER(exp)		((exp)->ex_flags & NFSEXP_GATHERED_WRITES) - -int nfsexp_flags(struct svc_rqst *rqstp, struct svc_export *exp); -__be32 check_nfsd_access(struct svc_export *exp, struct svc_rqst *rqstp); - -/* - * Function declarations - */ -int			nfsd_export_init(void); -void			nfsd_export_shutdown(void); -void			nfsd_export_flush(void); -void			exp_readlock(void); -void			exp_readunlock(void); -struct svc_export *	rqst_exp_get_by_name(struct svc_rqst *, -					     struct path *); -struct svc_export *	rqst_exp_parent(struct svc_rqst *, -					struct path *); -int			exp_rootfh(struct auth_domain *,  -					char *path, struct knfsd_fh *, int maxsize); -__be32			exp_pseudoroot(struct svc_rqst *, struct svc_fh *); -__be32			nfserrno(int errno); - -extern struct cache_detail svc_export_cache; - -static inline void exp_put(struct svc_export *exp) -{ -	cache_put(&exp->h, &svc_export_cache); -} - -static inline void exp_get(struct svc_export *exp) -{ -	cache_get(&exp->h); -} -struct svc_export * rqst_exp_find(struct svc_rqst *, int, u32 *); - -#endif /* __KERNEL__ */ - -#endif /* NFSD_EXPORT_H */ - diff --git a/include/linux/nfsd/nfsfh.h b/include/linux/nfsd/nfsfh.h deleted file mode 100644 index 80d55bbc536..00000000000 --- a/include/linux/nfsd/nfsfh.h +++ /dev/null @@ -1,168 +0,0 @@ -/* - * include/linux/nfsd/nfsfh.h - * - * This file describes the layout of the file handles as passed - * over the wire. - * - * Earlier versions of knfsd used to sign file handles using keyed MD5 - * or SHA. I've removed this code, because it doesn't give you more - * security than blocking external access to port 2049 on your firewall. - * - * Copyright (C) 1995, 1996, 1997 Olaf Kirch <okir@monad.swb.de> - */ - -#ifndef _LINUX_NFSD_FH_H -#define _LINUX_NFSD_FH_H - -# include <linux/types.h> -#ifdef __KERNEL__ -# include <linux/sunrpc/svc.h> -#endif -#include <linux/nfsd/const.h> - -/* - * This is the old "dentry style" Linux NFSv2 file handle. - * - * The xino and xdev fields are currently used to transport the - * ino/dev of the exported inode. - */ -struct nfs_fhbase_old { -	__u32		fb_dcookie;	/* dentry cookie - always 0xfeebbaca */ -	__u32		fb_ino;		/* our inode number */ -	__u32		fb_dirino;	/* dir inode number, 0 for directories */ -	__u32		fb_dev;		/* our device */ -	__u32		fb_xdev; -	__u32		fb_xino; -	__u32		fb_generation; -}; - -/* - * This is the new flexible, extensible style NFSv2/v3 file handle. - * by Neil Brown <neilb@cse.unsw.edu.au> - March 2000 - * - * The file handle starts with a sequence of four-byte words. - * The first word contains a version number (1) and three descriptor bytes - * that tell how the remaining 3 variable length fields should be handled. - * These three bytes are auth_type, fsid_type and fileid_type. - * - * All four-byte values are in host-byte-order. - * - * The auth_type field specifies how the filehandle can be authenticated - * This might allow a file to be confirmed to be in a writable part of a - * filetree without checking the path from it upto the root. - * Current values: - *     0  - No authentication.  fb_auth is 0 bytes long - * Possible future values: - *     1  - 4 bytes taken from MD5 hash of the remainer of the file handle - *          prefixed by a secret and with the important export flags. - * - * The fsid_type identifies how the filesystem (or export point) is - *    encoded. - *  Current values: - *     0  - 4 byte device id (ms-2-bytes major, ls-2-bytes minor), 4byte inode number - *        NOTE: we cannot use the kdev_t device id value, because kdev_t.h - *              says we mustn't.  We must break it up and reassemble. - *     1  - 4 byte user specified identifier - *     2  - 4 byte major, 4 byte minor, 4 byte inode number - DEPRECATED - *     3  - 4 byte device id, encoded for user-space, 4 byte inode number - *     4  - 4 byte inode number and 4 byte uuid - *     5  - 8 byte uuid - *     6  - 16 byte uuid - *     7  - 8 byte inode number and 16 byte uuid - * - * The fileid_type identified how the file within the filesystem is encoded. - * This is (will be) passed to, and set by, the underlying filesystem if it supports - * filehandle operations.  The filesystem must not use the value '0' or '0xff' and may - * only use the values 1 and 2 as defined below: - *  Current values: - *    0   - The root, or export point, of the filesystem.  fb_fileid is 0 bytes. - *    1   - 32bit inode number, 32 bit generation number. - *    2   - 32bit inode number, 32 bit generation number, 32 bit parent directory inode number. - * - */ -struct nfs_fhbase_new { -	__u8		fb_version;	/* == 1, even => nfs_fhbase_old */ -	__u8		fb_auth_type; -	__u8		fb_fsid_type; -	__u8		fb_fileid_type; -	__u32		fb_auth[1]; -/*	__u32		fb_fsid[0]; floating */ -/*	__u32		fb_fileid[0]; floating */ -}; - -struct knfsd_fh { -	unsigned int	fh_size;	/* significant for NFSv3. -					 * Points to the current size while building -					 * a new file handle -					 */ -	union { -		struct nfs_fhbase_old	fh_old; -		__u32			fh_pad[NFS4_FHSIZE/4]; -		struct nfs_fhbase_new	fh_new; -	} fh_base; -}; - -#define ofh_dcookie		fh_base.fh_old.fb_dcookie -#define ofh_ino			fh_base.fh_old.fb_ino -#define ofh_dirino		fh_base.fh_old.fb_dirino -#define ofh_dev			fh_base.fh_old.fb_dev -#define ofh_xdev		fh_base.fh_old.fb_xdev -#define ofh_xino		fh_base.fh_old.fb_xino -#define ofh_generation		fh_base.fh_old.fb_generation - -#define	fh_version		fh_base.fh_new.fb_version -#define	fh_fsid_type		fh_base.fh_new.fb_fsid_type -#define	fh_auth_type		fh_base.fh_new.fb_auth_type -#define	fh_fileid_type		fh_base.fh_new.fb_fileid_type -#define	fh_auth			fh_base.fh_new.fb_auth -#define	fh_fsid			fh_base.fh_new.fb_auth - -#ifdef __KERNEL__ - -static inline __u32 ino_t_to_u32(ino_t ino) -{ -	return (__u32) ino; -} - -static inline ino_t u32_to_ino_t(__u32 uino) -{ -	return (ino_t) uino; -} - -/* - * This is the internal representation of an NFS handle used in knfsd. - * pre_mtime/post_version will be used to support wcc_attr's in NFSv3. - */ -typedef struct svc_fh { -	struct knfsd_fh		fh_handle;	/* FH data */ -	struct dentry *		fh_dentry;	/* validated dentry */ -	struct svc_export *	fh_export;	/* export pointer */ -	int			fh_maxsize;	/* max size for fh_handle */ - -	unsigned char		fh_locked;	/* inode locked by us */ - -#ifdef CONFIG_NFSD_V3 -	unsigned char		fh_post_saved;	/* post-op attrs saved */ -	unsigned char		fh_pre_saved;	/* pre-op attrs saved */ - -	/* Pre-op attributes saved during fh_lock */ -	__u64			fh_pre_size;	/* size before operation */ -	struct timespec		fh_pre_mtime;	/* mtime before oper */ -	struct timespec		fh_pre_ctime;	/* ctime before oper */ -	/* -	 * pre-op nfsv4 change attr: note must check IS_I_VERSION(inode) -	 *  to find out if it is valid. -	 */ -	u64			fh_pre_change; - -	/* Post-op attributes saved in fh_unlock */ -	struct kstat		fh_post_attr;	/* full attrs after operation */ -	u64			fh_post_change; /* nfsv4 change; see above */ -#endif /* CONFIG_NFSD_V3 */ - -} svc_fh; - -#endif /* __KERNEL__ */ - - -#endif /* _LINUX_NFSD_FH_H */ diff --git a/include/linux/nfsd/stats.h b/include/linux/nfsd/stats.h deleted file mode 100644 index 2693ef647df..00000000000 --- a/include/linux/nfsd/stats.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * linux/include/linux/nfsd/stats.h - * - * Statistics for NFS server. - * - * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de> - */ - -#ifndef LINUX_NFSD_STATS_H -#define LINUX_NFSD_STATS_H - -#include <linux/nfs4.h> - -/* thread usage wraps very million seconds (approx one fortnight) */ -#define	NFSD_USAGE_WRAP	(HZ*1000000) - -#ifdef __KERNEL__ - -struct nfsd_stats { -	unsigned int	rchits;		/* repcache hits */ -	unsigned int	rcmisses;	/* repcache hits */ -	unsigned int	rcnocache;	/* uncached reqs */ -	unsigned int	fh_stale;	/* FH stale error */ -	unsigned int	fh_lookup;	/* dentry cached */ -	unsigned int	fh_anon;	/* anon file dentry returned */ -	unsigned int	fh_nocache_dir;	/* filehandle not found in dcache */ -	unsigned int	fh_nocache_nondir;	/* filehandle not found in dcache */ -	unsigned int	io_read;	/* bytes returned to read requests */ -	unsigned int	io_write;	/* bytes passed in write requests */ -	unsigned int	th_cnt;		/* number of available threads */ -	unsigned int	th_usage[10];	/* number of ticks during which n perdeciles -					 * of available threads were in use */ -	unsigned int	th_fullcnt;	/* number of times last free thread was used */ -	unsigned int	ra_size;	/* size of ra cache */ -	unsigned int	ra_depth[11];	/* number of times ra entry was found that deep -					 * in the cache (10percentiles). [10] = not found */ -#ifdef CONFIG_NFSD_V4 -	unsigned int	nfs4_opcount[LAST_NFS4_OP + 1];	/* count of individual nfsv4 operations */ -#endif - -}; - - -extern struct nfsd_stats	nfsdstats; -extern struct svc_stat		nfsd_svcstats; - -void	nfsd_stat_init(void); -void	nfsd_stat_shutdown(void); - -#endif /* __KERNEL__ */ -#endif /* LINUX_NFSD_STATS_H */ diff --git a/include/linux/nfsd/syscall.h b/include/linux/nfsd/syscall.h deleted file mode 100644 index 812bc1e160d..00000000000 --- a/include/linux/nfsd/syscall.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - * include/linux/nfsd/syscall.h - * - * This file holds all declarations for the knfsd syscall interface. - * - * Copyright (C) 1995-1997 Olaf Kirch <okir@monad.swb.de> - */ - -#ifndef NFSD_SYSCALL_H -#define NFSD_SYSCALL_H - -#include <linux/types.h> -#include <linux/nfsd/export.h> - -/* - * Version of the syscall interface - */ -#define NFSCTL_VERSION		0x0201 - -/* - * These are the commands understood by nfsctl(). - */ -#define NFSCTL_SVC		0	/* This is a server process. */ -#define NFSCTL_ADDCLIENT	1	/* Add an NFS client. */ -#define NFSCTL_DELCLIENT	2	/* Remove an NFS client. */ -#define NFSCTL_EXPORT		3	/* export a file system. */ -#define NFSCTL_UNEXPORT		4	/* unexport a file system. */ -/*#define NFSCTL_UGIDUPDATE	5	/ * update a client's uid/gid map. DISCARDED */ -/*#define NFSCTL_GETFH		6	/ * get an fh by ino DISCARDED */ -#define NFSCTL_GETFD		7	/* get an fh by path (used by mountd) */ -#define	NFSCTL_GETFS		8	/* get an fh by path with max FH len */ - -/* SVC */ -struct nfsctl_svc { -	unsigned short		svc_port; -	int			svc_nthreads; -}; - -/* ADDCLIENT/DELCLIENT */ -struct nfsctl_client { -	char			cl_ident[NFSCLNT_IDMAX+1]; -	int			cl_naddr; -	struct in_addr		cl_addrlist[NFSCLNT_ADDRMAX]; -	int			cl_fhkeytype; -	int			cl_fhkeylen; -	unsigned char		cl_fhkey[NFSCLNT_KEYMAX]; -}; - -/* EXPORT/UNEXPORT */ -struct nfsctl_export { -	char			ex_client[NFSCLNT_IDMAX+1]; -	char			ex_path[NFS_MAXPATHLEN+1]; -	__kernel_old_dev_t	ex_dev; -	__kernel_ino_t		ex_ino; -	int			ex_flags; -	__kernel_uid_t		ex_anon_uid; -	__kernel_gid_t		ex_anon_gid; -}; - -/* GETFD */ -struct nfsctl_fdparm { -	struct sockaddr		gd_addr; -	char			gd_path[NFS_MAXPATHLEN+1]; -	int			gd_version; -}; - -/* GETFS - GET Filehandle with Size */ -struct nfsctl_fsparm { -	struct sockaddr		gd_addr; -	char			gd_path[NFS_MAXPATHLEN+1]; -	int			gd_maxlen; -}; - -/* - * This is the argument union. - */ -struct nfsctl_arg { -	int			ca_version;	/* safeguard */ -	union { -		struct nfsctl_svc	u_svc; -		struct nfsctl_client	u_client; -		struct nfsctl_export	u_export; -		struct nfsctl_fdparm	u_getfd; -		struct nfsctl_fsparm	u_getfs; -		/* -		 * The following dummy member is needed to preserve binary compatibility -		 * on platforms where alignof(void*)>alignof(int).  It's needed because -		 * this union used to contain a member (u_umap) which contained a -		 * pointer. -		 */ -		void *u_ptr; -	} u; -#define ca_svc		u.u_svc -#define ca_client	u.u_client -#define ca_export	u.u_export -#define ca_getfd	u.u_getfd -#define	ca_getfs	u.u_getfs -}; - -union nfsctl_res { -	__u8			cr_getfh[NFS_FHSIZE]; -	struct knfsd_fh		cr_getfs; -}; - -#ifdef __KERNEL__ -/* - * Kernel syscall implementation. - */ -extern int		exp_addclient(struct nfsctl_client *ncp); -extern int		exp_delclient(struct nfsctl_client *ncp); -extern int		exp_export(struct nfsctl_export *nxp); -extern int		exp_unexport(struct nfsctl_export *nxp); - -#endif /* __KERNEL__ */ - -#endif /* NFSD_SYSCALL_H */  | 
