patch-2.1.32 linux/include/linux/nfs3.h

Next file: linux/include/linux/nfs_fs.h
Previous file: linux/include/linux/nfs.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.31/linux/include/linux/nfs3.h linux/include/linux/nfs3.h
@@ -0,0 +1,252 @@
+/*
+ * NFSv3 protocol definitions
+ */
+#ifndef _LINUX_NFS3_H
+#define _LINUX_NFS3_H
+
+#include <linux/sunrpc/msg_prot.h>
+#include <linux/nfs.h>
+
+#define NFS3_PORT		2049
+#define NFS3_MAXDATA		8192
+#define NFS3_MAXPATHLEN		PATH_MAX
+#define NFS3_MAXNAMLEN		NAME_MAX
+#define NFS3_MAXGROUPS		16
+#define NFS3_FHSIZE		NFS_FHSIZE
+#define NFS3_COOKIESIZE		4
+#define NFS3_FIFO_DEV		(-1)
+#define NFS3MODE_FMT		0170000
+#define NFS3MODE_DIR		0040000
+#define NFS3MODE_CHR		0020000
+#define NFS3MODE_BLK		0060000
+#define NFS3MODE_REG		0100000
+#define NFS3MODE_LNK		0120000
+#define NFS3MODE_SOCK		0140000
+#define NFS3MODE_FIFO		0010000
+
+	
+enum nfs3_stat {
+	NFS3_OK			= 0,
+	NFS3ERR_PERM		= 1,
+	NFS3ERR_NOENT		= 2,
+	NFS3ERR_IO		= 5,
+	NFS3ERR_NXIO		= 6,
+	NFS3ERR_EAGAIN		= 11,
+	NFS3ERR_ACCES		= 13,
+	NFS3ERR_EXIST		= 17,
+	NFS3ERR_XDEV		= 18,	/* new in NFSv3 */
+	NFS3ERR_NODEV		= 19,
+	NFS3ERR_NOTDIR		= 20,
+	NFS3ERR_ISDIR		= 21,
+	NFS3ERR_INVAL		= 22,	/* new in NFSv3 */
+	NFS3ERR_FBIG		= 27,
+	NFS3ERR_NOSPC		= 28,
+	NFS3ERR_ROFS		= 30,
+	NFS3ERR_MLINK		= 31,	/* new in NFSv3 */
+	NFS3ERR_NAMETOOLONG	= 63,
+	NFS3ERR_NOTEMPTY	= 66,
+	NFS3ERR_DQUOT		= 69,
+	NFS3ERR_STALE		= 70,
+	NFS3ERR_REMOTE		= 71,	/* new in NFSv3 */
+	NFS3ERR_BADHANDLE	= 10001,/* ditto */
+	NFS3ERR_NOT_SYNC	= 10002,/* ditto */
+	NFS3ERR_BAD_COOKIE	= 10003,/* ditto */
+	NFS3ERR_NOTSUPP		= 10004,/* ditto */
+	NFS3ERR_TOOSMALL	= 10005,/* ditto */
+	NFS3ERR_SERVERFAULT	= 10006,/* ditto */
+	NFS3ERR_BADTYPE		= 10007,/* ditto */
+	NFS3ERR_JUKEBOX		= 10008,/* ditto */
+};
+
+enum nfs3_ftype {
+	NF3NON  = 0,
+	NF3REG  = 1,
+	NF3DIR  = 2,
+	NF3BLK  = 3,
+	NF3CHR  = 4,
+	NF3LNK  = 5,
+	NF3SOCK = 6,
+	NF3FIFO = 7,	/* changed from NFSv2 (was 8) */
+	NF3BAD  = 8
+};
+
+#define NFS3_VERSION		3
+#define NFSPROC_NULL		0
+#define NFSPROC_GETATTR		1
+#define NFSPROC_SETATTR		2
+#define NFSPROC_ROOT		3
+#define NFSPROC_LOOKUP		4
+#define NFSPROC_READLINK	5
+#define NFSPROC_READ		6
+#define NFSPROC_WRITECACHE	7
+#define NFSPROC_WRITE		8
+#define NFSPROC_CREATE		9
+#define NFSPROC_REMOVE		10
+#define NFSPROC_RENAME		11
+#define NFSPROC_LINK		12
+#define NFSPROC_SYMLINK		13
+#define NFSPROC_MKDIR		14
+#define NFSPROC_RMDIR		15
+#define NFSPROC_READDIR		16
+#define NFSPROC_STATFS		17
+
+#if defined(__KERNEL__) || defined(NFS_NEED_KERNEL_TYPES)
+
+struct nfs3_fh {
+	__u32			size;
+	__u8			data[NFS3_FHSIZE];
+};
+
+struct nfs3_fattr {
+	enum nfs3_ftype		type;
+	__u32			mode;
+	__u32			nlink;
+	__u32			uid;
+	__u32			gid;
+	__u64			size;
+	__u64			used;
+	__u32			rdev_maj;
+	__u32			rdev_min;
+	__u32			fsid;
+	__u32			fileid;
+	struct nfs_time		atime;
+	struct nfs_time		mtime;
+	struct nfs_time		ctime;
+};
+
+struct nfs3_wcc_attr {
+	__u64			size;
+	struct nfs_time		mtime;
+	struct nfs_time		ctime;
+};
+
+struct nfs3_wcc_data {
+	struct nfs3_wcc_attr	before;
+	struct nfs3_wcc_attr	after;
+};
+
+struct nfs3_sattr {
+	__u32			valid;
+	__u32			mode;
+	__u32			uid;
+	__u32			gid;
+	__u64			size;
+	struct nfs_time		atime;
+	struct nfs_time		mtime;
+};
+
+struct nfs3_entry {
+	__u32			fileid;
+	char *			name;
+	unsigned int		length;
+	__u32			cookie;
+	__u32			eof;
+};
+
+struct nfs3_fsinfo {
+	__u32			tsize;
+	__u32			bsize;
+	__u32			blocks;
+	__u32			bfree;
+	__u32			bavail;
+};
+
+#ifdef NFS_NEED_XDR_TYPES
+
+struct nfs3_sattrargs {
+	struct nfs_fh *		fh;
+	struct nfs_sattr *	sattr;
+};
+
+struct nfs3_diropargs {
+	struct nfs_fh *		fh;
+	const char *		name;
+};
+
+struct nfs3_readargs {
+	struct nfs_fh *		fh;
+	__u32			offset;
+	__u32			count;
+	void *			buffer;
+};
+
+struct nfs3_writeargs {
+	struct nfs_fh *		fh;
+	__u32			offset;
+	__u32			count;
+	const void *		buffer;
+};
+
+struct nfs3_createargs {
+	struct nfs_fh *		fh;
+	const char *		name;
+	struct nfs_sattr *	sattr;
+};
+
+struct nfs3_renameargs {
+	struct nfs_fh *		fromfh;
+	const char *		fromname;
+	struct nfs_fh *		tofh;
+	const char *		toname;
+};
+
+struct nfs3_linkargs {
+	struct nfs_fh *		fromfh;
+	struct nfs_fh *		tofh;
+	const char *		toname;
+};
+
+struct nfs3_symlinkargs {
+	struct nfs_fh *		fromfh;
+	const char *		fromname;
+	const char *		topath;
+	struct nfs_sattr *	sattr;
+};
+
+struct nfs3_readdirargs {
+	struct nfs_fh *		fh;
+	__u32			cookie;
+	void *			buffer;
+	unsigned int		bufsiz;
+};
+
+struct nfs3_diropok {
+	struct nfs_fh *		fh;
+	struct nfs_fattr *	fattr;
+};
+
+struct nfs3_readres {
+	struct nfs_fattr *	fattr;
+	unsigned int		count;
+};
+
+struct nfs3_readlinkres {
+	char **			string;
+	unsigned int *		lenp;
+	unsigned int		maxlen;
+	void *			buffer;
+};
+
+struct nfs3_readdirres {
+	void *			buffer;
+	unsigned int		bufsiz;
+};
+
+/*
+ * The following are for NFSv3
+ */
+struct nfs3_fh {
+	__u32			size;
+	__u8			data[NFS3_FHSIZE]
+};
+
+struct nfs3_wcc_attr {
+	__u64			size;
+	struct nfs_time		mtime;
+	struct nfs_time		ctime;
+};
+
+#endif /* NFS_NEED_XDR_TYPES */
+#endif /* __KERNEL__ */
+
+#endif

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov