mirror of
https://github.com/adulau/aha.git
synced 2025-01-03 22:53:18 +00:00
[PATCH] NFS: Cache invalidation fixup
If someone has renamed a directory on the server, triggering the d_move code in d_materialise_unique(), then we need to invalidate the cached directory information in the source parent directory. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> Cc: Miklos Szeredi <miklos@szeredi.hu> Cc: Maneesh Soni <maneesh@in.ibm.com> Cc: Dipankar Sarma <dipankar@in.ibm.com> Cc: Neil Brown <neilb@cse.unsw.edu.au> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
9eaef27b36
commit
fc22617e45
1 changed files with 6 additions and 0 deletions
|
@ -936,8 +936,14 @@ static struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, stru
|
||||||
no_entry:
|
no_entry:
|
||||||
res = d_materialise_unique(dentry, inode);
|
res = d_materialise_unique(dentry, inode);
|
||||||
if (res != NULL) {
|
if (res != NULL) {
|
||||||
|
struct dentry *parent;
|
||||||
if (IS_ERR(res))
|
if (IS_ERR(res))
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
|
/* Was a directory renamed! */
|
||||||
|
parent = dget_parent(res);
|
||||||
|
if (!IS_ROOT(parent))
|
||||||
|
nfs_mark_for_revalidate(parent->d_inode);
|
||||||
|
dput(parent);
|
||||||
dentry = res;
|
dentry = res;
|
||||||
}
|
}
|
||||||
nfs_renew_times(dentry);
|
nfs_renew_times(dentry);
|
||||||
|
|
Loading…
Reference in a new issue