1 #ifndef _NFS_FS_I
2 #define _NFS_FS_I
3 
4 #include <asm/types.h>
5 #include <linux/list.h>
6 #include <linux/nfs.h>
7 
8 /*
9  * nfs fs inode data in memory
10  */
11 struct nfs_inode_info {
12 	/*
13 	 * The 64bit 'inode number'
14 	 */
15 	__u64 fileid;
16 
17 	/*
18 	 * NFS file handle
19 	 */
20 	struct nfs_fh		fh;
21 
22 	/*
23 	 * Various flags
24 	 */
25 	unsigned short		flags;
26 
27 	/*
28 	 * read_cache_jiffies is when we started read-caching this inode,
29 	 * and read_cache_mtime is the mtime of the inode at that time.
30 	 * attrtimeo is for how long the cached information is assumed
31 	 * to be valid. A successful attribute revalidation doubles
32 	 * attrtimeo (up to acregmax/acdirmax), a failure resets it to
33 	 * acregmin/acdirmin.
34 	 *
35 	 * We need to revalidate the cached attrs for this inode if
36 	 *
37 	 *	jiffies - read_cache_jiffies > attrtimeo
38 	 *
39 	 * and invalidate any cached data/flush out any dirty pages if
40 	 * we find that
41 	 *
42 	 *	mtime != read_cache_mtime
43 	 */
44 	unsigned long		read_cache_jiffies;
45 	__u64			read_cache_ctime;
46 	__u64			read_cache_mtime;
47 	__u64			read_cache_isize;
48 	unsigned long		attrtimeo;
49 	unsigned long		attrtimeo_timestamp;
50 
51 	/*
52 	 * Timestamp that dates the change made to read_cache_mtime.
53 	 * This is of use for dentry revalidation
54 	 */
55 	unsigned long		cache_mtime_jiffies;
56 
57 	/*
58 	 * This is the cookie verifier used for NFSv3 readdir
59 	 * operations
60 	 */
61 	__u32			cookieverf[2];
62 
63 	/*
64 	 * This is the list of dirty unwritten pages.
65 	 */
66 	struct list_head	read;
67 	struct list_head	dirty;
68 	struct list_head	commit;
69 	struct list_head	writeback;
70 
71 	unsigned int		nread,
72 				ndirty,
73 				ncommit,
74 				npages;
75 
76 	/* Credentials for shared mmap */
77 	struct rpc_cred		*mm_cred;
78 };
79 
80 /*
81  * Legal inode flag values
82  */
83 #define NFS_INO_STALE		0x0001		/* possible stale inode */
84 #define NFS_INO_ADVISE_RDPLUS   0x0002          /* advise readdirplus */
85 #define NFS_INO_REVALIDATING	0x0004		/* revalidating attrs */
86 #define NFS_IS_SNAPSHOT		0x0010		/* a snapshot file */
87 #define NFS_INO_FLUSH		0x0020		/* inode is due for flushing */
88 #define NFS_INO_MAPPED		0x0040		/* page invalidation failed */
89 
90 /*
91  * NFS lock info
92  */
93 struct nfs_lock_info {
94 	u32		state;
95 	u32		flags;
96 	struct nlm_host	*host;
97 };
98 
99 /*
100  * Lock flag values
101  */
102 #define NFS_LCK_GRANTED		0x0001		/* lock has been granted */
103 #define NFS_LCK_RECLAIM		0x0002		/* lock marked for reclaiming */
104 
105 #endif
106