aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/dir.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-19 17:33:41 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-19 17:33:41 -0400
commit3e1f900bff40460d7bbab0ccd1a9efc3c70aee49 (patch)
treed0e2138ff61bdc9d1bd5b7ae5a1e75267d709afc /fs/nfs/dir.c
parent12795067cfa595434be0236b102a8eb20d578741 (diff)
parent0a87cf128f3d3bc6aa7b1040e73109c974ed875a (diff)
Merge git://git.linux-nfs.org/pub/linux/nfs-2.6
* git://git.linux-nfs.org/pub/linux/nfs-2.6: NFSv4: handle lack of clientaddr in option string NFSv4: debug print ntohl(status) in nfs client callback xdr code SUNRPC: Clean up the sillyrename code NFS: Introduce struct nfs_removeargs+nfs_removeres NFS: Use dentry->d_time to store the parent directory verifier. SUNRPC: move bkl locking and xdr proc invocation into a common helper NFSv4: Fix the nfsv4 readlink reply buffer alignment NFSv4: Fix the readdir reply buffer alignment NFSv4: More NFSv4 xdr cleanups NFSv4: Try to recover from getfh failures in nfs4_xdr_dec_open NFSv4: 'constify' lookup arguments. NFSv4: Don't fail nfs4_xdr_dec_open if decode_restorefh() failed NFSv4: Fix open state recovery NFSD/SUNRPC: Fix the automatic selection of RPCSEC_GSS
Diffstat (limited to 'fs/nfs/dir.c')
-rw-r--r--fs/nfs/dir.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 322141f4ab48..ea97408e423e 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -654,7 +654,7 @@ static int nfs_check_verifier(struct inode *dir, struct dentry *dentry)
654 654
655 if (IS_ROOT(dentry)) 655 if (IS_ROOT(dentry))
656 return 1; 656 return 1;
657 verf = (unsigned long)dentry->d_fsdata; 657 verf = dentry->d_time;
658 if (nfs_caches_unstable(dir) 658 if (nfs_caches_unstable(dir)
659 || verf != NFS_I(dir)->cache_change_attribute) 659 || verf != NFS_I(dir)->cache_change_attribute)
660 return 0; 660 return 0;
@@ -663,7 +663,7 @@ static int nfs_check_verifier(struct inode *dir, struct dentry *dentry)
663 663
664static inline void nfs_set_verifier(struct dentry * dentry, unsigned long verf) 664static inline void nfs_set_verifier(struct dentry * dentry, unsigned long verf)
665{ 665{
666 dentry->d_fsdata = (void *)verf; 666 dentry->d_time = verf;
667} 667}
668 668
669static void nfs_refresh_verifier(struct dentry * dentry, unsigned long verf) 669static void nfs_refresh_verifier(struct dentry * dentry, unsigned long verf)
@@ -869,7 +869,7 @@ static void nfs_dentry_iput(struct dentry *dentry, struct inode *inode)
869 if (dentry->d_flags & DCACHE_NFSFS_RENAMED) { 869 if (dentry->d_flags & DCACHE_NFSFS_RENAMED) {
870 lock_kernel(); 870 lock_kernel();
871 drop_nlink(inode); 871 drop_nlink(inode);
872 nfs_complete_unlink(dentry); 872 nfs_complete_unlink(dentry, inode);
873 unlock_kernel(); 873 unlock_kernel();
874 } 874 }
875 /* When creating a negative dentry, we want to renew d_time */ 875 /* When creating a negative dentry, we want to renew d_time */
@@ -1411,7 +1411,7 @@ static int nfs_sillyrename(struct inode *dir, struct dentry *dentry)
1411 nfs_renew_times(dentry); 1411 nfs_renew_times(dentry);
1412 nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); 1412 nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
1413 d_move(dentry, sdentry); 1413 d_move(dentry, sdentry);
1414 error = nfs_async_unlink(dentry); 1414 error = nfs_async_unlink(dir, dentry);
1415 /* If we return 0 we don't unlink */ 1415 /* If we return 0 we don't unlink */
1416 } 1416 }
1417 dput(sdentry); 1417 dput(sdentry);