blob: f7e9c1015328fa55e76a018ca53ac6ef5c7dd178 [file] [log] [blame]
#ifndef _NFS_FS_I
#define _NFS_FS_I
#include <asm/types.h>
#include <linux/list.h>
#include <linux/nfs.h>
/*
* nfs fs inode data in memory
*/
struct nfs_inode_info {
/*
* The 64bit 'inode number'
*/
__u64 fileid;
/*
* NFS file handle
*/
struct nfs_fh fh;
/*
* Various flags
*/
unsigned short flags;
/*
* read_cache_jiffies is when we started read-caching this inode,
* and read_cache_mtime is the mtime of the inode at that time.
* attrtimeo is for how long the cached information is assumed
* to be valid. A successful attribute revalidation doubles
* attrtimeo (up to acregmax/acdirmax), a failure resets it to
* acregmin/acdirmin.
*
* We need to revalidate the cached attrs for this inode if
*
* jiffies - read_cache_jiffies > attrtimeo
*
* and invalidate any cached data/flush out any dirty pages if
* we find that
*
* mtime != read_cache_mtime
*/
unsigned long read_cache_jiffies;
__u64 read_cache_ctime;
__u64 read_cache_mtime;
__u64 read_cache_isize;
unsigned long attrtimeo;
unsigned long attrtimeo_timestamp;
/*
* Timestamp that dates the change made to read_cache_mtime.
* This is of use for dentry revalidation
*/
unsigned long cache_mtime_jiffies;
/*
* This is the cookie verifier used for NFSv3 readdir
* operations
*/
__u32 cookieverf[2];
/*
* This is the list of dirty unwritten pages.
*/
struct list_head read;
struct list_head dirty;
struct list_head commit;
struct list_head writeback;
unsigned int nread,
ndirty,
ncommit,
npages;
/* Credentials for shared mmap */
struct rpc_cred *mm_cred;
};
/*
* Legal inode flag values
*/
#define NFS_INO_STALE 0x0001 /* possible stale inode */
#define NFS_INO_ADVISE_RDPLUS 0x0002 /* advise readdirplus */
#define NFS_INO_REVALIDATING 0x0004 /* revalidating attrs */
#define NFS_IS_SNAPSHOT 0x0010 /* a snapshot file */
#define NFS_INO_FLUSH 0x0020 /* inode is due for flushing */
#define NFS_INO_MAPPED 0x0040 /* page invalidation failed */
/*
* NFS lock info
*/
struct nfs_lock_info {
u32 state;
u32 flags;
struct nlm_host *host;
};
/*
* Lock flag values
*/
#define NFS_LCK_GRANTED 0x0001 /* lock has been granted */
#define NFS_LCK_RECLAIM 0x0002 /* lock marked for reclaiming */
#endif