|
@@ -469,6 +469,8 @@ void nfs_prime_dcache(struct dentry *parent, struct nfs_entry *entry)
|
|
|
struct inode *inode;
|
|
|
int status;
|
|
|
|
|
|
+ if (!(entry->fattr->valid & NFS_ATTR_FATTR_FSID))
|
|
|
+ return;
|
|
|
if (filename.name[0] == '.') {
|
|
|
if (filename.len == 1)
|
|
|
return;
|
|
@@ -479,6 +481,10 @@ void nfs_prime_dcache(struct dentry *parent, struct nfs_entry *entry)
|
|
|
|
|
|
dentry = d_lookup(parent, &filename);
|
|
|
if (dentry != NULL) {
|
|
|
+ /* Is there a mountpoint here? If so, just exit */
|
|
|
+ if (!nfs_fsid_equal(&NFS_SB(dentry->d_sb)->fsid,
|
|
|
+ &entry->fattr->fsid))
|
|
|
+ goto out;
|
|
|
if (nfs_same_file(dentry, entry)) {
|
|
|
nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
|
|
|
status = nfs_refresh_inode(dentry->d_inode, entry->fattr);
|