Skip to content

Commit

Permalink
NFS: Don't use readdirplus data if the page cache is invalid
Browse files Browse the repository at this point in the history
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
  • Loading branch information
Trond Myklebust authored and Trond Myklebust committed Oct 9, 2007
1 parent 47aabaa commit 57fa76f
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion fs/nfs/dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -1110,6 +1110,7 @@ static struct dentry *nfs_readdir_lookup(nfs_readdir_descriptor_t *desc)
.len = entry->len,
};
struct inode *inode;
unsigned long verf = nfs_save_change_attribute(dir);

switch (name.len) {
case 2:
Expand All @@ -1120,6 +1121,14 @@ static struct dentry *nfs_readdir_lookup(nfs_readdir_descriptor_t *desc)
if (name.name[0] == '.')
return dget(parent);
}

spin_lock(&dir->i_lock);
if (NFS_I(dir)->cache_validity & NFS_INO_INVALID_DATA) {
spin_unlock(&dir->i_lock);
return NULL;
}
spin_unlock(&dir->i_lock);

name.hash = full_name_hash(name.name, name.len);
dentry = d_lookup(parent, &name);
if (dentry != NULL) {
Expand Down Expand Up @@ -1161,7 +1170,7 @@ static struct dentry *nfs_readdir_lookup(nfs_readdir_descriptor_t *desc)
}

out_renew:
nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
nfs_set_verifier(dentry, verf);
return dentry;
}

Expand Down

0 comments on commit 57fa76f

Please sign in to comment.