aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/nfs_xdr.h
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2008-10-14 19:16:07 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2008-10-14 19:23:17 -0400
commit4704f0e274829e3af00737d2d9adace2d71a9605 (patch)
tree048404f927dc210f1d7c695cb39e28e4e7d49030 /include/linux/nfs_xdr.h
parentNFS: Changes to inode->i_nlinks must set the NFS_INO_INVALID_ATTR flag (diff)
downloadlinux-dev-4704f0e274829e3af00737d2d9adace2d71a9605.tar.xz
linux-dev-4704f0e274829e3af00737d2d9adace2d71a9605.zip
NFS: Fix the resolution problem with nfs_inode_attrs_need_update()
It appears that 'jiffies' timestamps do not have high enough resolution for nfs_inode_attrs_need_update(). One problem is that a GETATTR can be launched within < 1 jiffy of the last operation that updated the attribute. Another problem is that RPC calls can take < 1 jiffy to execute. We can fix this by switching the variables to use a simple global counter that gets incremented every time we start another GETATTR call. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'include/linux/nfs_xdr.h')
-rw-r--r--include/linux/nfs_xdr.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
index 6ee6ae3f095c..c1c31acb8a2b 100644
--- a/include/linux/nfs_xdr.h
+++ b/include/linux/nfs_xdr.h
@@ -56,6 +56,7 @@ struct nfs_fattr {
__u64 change_attr; /* NFSv4 change attribute */
__u64 pre_change_attr;/* pre-op NFSv4 change attribute */
unsigned long time_start;
+ unsigned long gencount;
};
#define NFS_ATTR_WCC 0x0001 /* pre-op WCC data */