NFS: Fix nfs_verify_change_attribute()
We don't care about whether or not some other process on our client is changing the directory while we're in nfs_lookup_revalidate(), because the dcache will take care of ensuring local atomicity. We can therefore remove the test for nfs_caches_unstable(). Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
Родитель
8edb018288
Коммит
4b841736bc
|
@ -646,7 +646,7 @@ static int nfs_check_verifier(struct inode *dir, struct dentry *dentry)
|
||||||
{
|
{
|
||||||
if (IS_ROOT(dentry))
|
if (IS_ROOT(dentry))
|
||||||
return 1;
|
return 1;
|
||||||
if (dentry->d_time == NFS_I(dir)->cache_change_attribute)
|
if (nfs_verify_change_attribute(dir, dentry->d_time))
|
||||||
return 1;
|
return 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -270,16 +270,16 @@ static inline unsigned long nfs_save_change_attribute(struct inode *dir)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nfs_verify_change_attribute - Detects NFS inode cache updates
|
* nfs_verify_change_attribute - Detects NFS remote directory changes
|
||||||
* @inode - pointer to inode
|
* @dir - pointer to parent directory inode
|
||||||
* @chattr - previously saved change attribute
|
* @chattr - previously saved change attribute
|
||||||
* Return "false" if metadata has been updated (or is in the process of
|
* Return "false" if the verifiers doesn't match the change attribute.
|
||||||
* being updated) since the change attribute was saved.
|
* This would usually indicate that the directory contents have changed on
|
||||||
|
* the server, and that any dentries need revalidating.
|
||||||
*/
|
*/
|
||||||
static inline int nfs_verify_change_attribute(struct inode *inode, unsigned long chattr)
|
static inline int nfs_verify_change_attribute(struct inode *dir, unsigned long chattr)
|
||||||
{
|
{
|
||||||
return !nfs_caches_unstable(inode)
|
return chattr == NFS_I(dir)->cache_change_attribute;
|
||||||
&& chattr == NFS_I(inode)->cache_change_attribute;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Загрузка…
Ссылка в новой задаче