diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2007-08-15 12:59:12 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2007-10-09 17:18:43 -0400 |
commit | 68e8a70d3cae23716f6b2b3872eba10eccea148c (patch) | |
tree | ae1cdf2370aa8f77e6a953d665576919699df32d /fs/nfs/inode.c | |
parent | f2115dc9877d480392e48e3c83bc8cbb4b418fee (diff) |
NFS: nfs_post_op_update_inode() should call nfs_refresh_inode()
Ensure that we don't clobber the results from a more recent getattr call...
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/inode.c')
-rw-r--r-- | fs/nfs/inode.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 721e511f8ba9..0d98074d0766 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c | |||
@@ -915,14 +915,14 @@ int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr) | |||
915 | struct nfs_inode *nfsi = NFS_I(inode); | 915 | struct nfs_inode *nfsi = NFS_I(inode); |
916 | int status = 0; | 916 | int status = 0; |
917 | 917 | ||
918 | spin_lock(&inode->i_lock); | ||
919 | if (unlikely((fattr->valid & NFS_ATTR_FATTR) == 0)) { | 918 | if (unlikely((fattr->valid & NFS_ATTR_FATTR) == 0)) { |
919 | spin_lock(&inode->i_lock); | ||
920 | nfsi->cache_validity |= NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ATTR|NFS_INO_REVAL_PAGECACHE; | 920 | nfsi->cache_validity |= NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ATTR|NFS_INO_REVAL_PAGECACHE; |
921 | spin_unlock(&inode->i_lock); | ||
921 | goto out; | 922 | goto out; |
922 | } | 923 | } |
923 | status = nfs_update_inode(inode, fattr); | 924 | status = nfs_refresh_inode(inode, fattr); |
924 | out: | 925 | out: |
925 | spin_unlock(&inode->i_lock); | ||
926 | return status; | 926 | return status; |
927 | } | 927 | } |
928 | 928 | ||