Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b841736 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

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: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 8edb0182
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -646,7 +646,7 @@ static int nfs_check_verifier(struct inode *dir, struct dentry *dentry)
{
	if (IS_ROOT(dentry))
		return 1;
	if (dentry->d_time == NFS_I(dir)->cache_change_attribute)
	if (nfs_verify_change_attribute(dir, dentry->d_time))
		return 1;
	return 0;
}
+7 −7
Original line number Diff line number Diff line
@@ -270,16 +270,16 @@ static inline unsigned long nfs_save_change_attribute(struct inode *dir)
}

/**
 * nfs_verify_change_attribute - Detects NFS inode cache updates
 * @inode - pointer to inode
 * nfs_verify_change_attribute - Detects NFS remote directory changes
 * @dir - pointer to parent directory inode
 * @chattr - previously saved change attribute
 * Return "false" if metadata has been updated (or is in the process of
 * being updated) since the change attribute was saved.
 * Return "false" if the verifiers doesn't match the change attribute.
 * 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)
		&& chattr == NFS_I(inode)->cache_change_attribute;
	return chattr == NFS_I(dir)->cache_change_attribute;
}

/*