diff options
Diffstat (limited to 'fs/nfsd/nfsfh.h')
| -rw-r--r-- | fs/nfsd/nfsfh.h | 59 | 
1 files changed, 54 insertions, 5 deletions
| diff --git a/fs/nfsd/nfsfh.h b/fs/nfsd/nfsfh.h index ad67964d0bb1..2e89e70ac15c 100644 --- a/fs/nfsd/nfsfh.h +++ b/fs/nfsd/nfsfh.h @@ -1,9 +1,58 @@ -/* Copyright (C) 1995, 1996, 1997 Olaf Kirch <okir@monad.swb.de> */ +/* + * Copyright (C) 1995, 1996, 1997 Olaf Kirch <okir@monad.swb.de> + * + * This file describes the layout of the file handles as passed + * over the wire. + */ +#ifndef _LINUX_NFSD_NFSFH_H +#define _LINUX_NFSD_NFSFH_H + +#include <linux/sunrpc/svc.h> +#include <uapi/linux/nfsd/nfsfh.h> + +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; +} -#ifndef _LINUX_NFSD_FH_INT_H -#define _LINUX_NFSD_FH_INT_H +/* + * 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 */ +	unsigned char		fh_want_write;	/* remount protection taken */ + +#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 */ -#include <linux/nfsd/nfsfh.h> +} svc_fh;  enum nfsd_fsid {  	FSID_DEV = 0, @@ -215,4 +264,4 @@ fh_unlock(struct svc_fh *fhp)  	}  } -#endif /* _LINUX_NFSD_FH_INT_H */ +#endif /* _LINUX_NFSD_NFSFH_H */ | 
