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

Commit 7957c141 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFS: fix nfs_verify_change_attribute



We always want to check that the verifier and directory
cache_change_attribute match. This also allows us to remove the 'wraparound
hack' for the cache_change_attribute. If we're only checking for equality,
then we don't care about wraparound issues.

Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 68e8a70d
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -972,10 +972,6 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr)
	nfsi->read_cache_jiffies = fattr->time_start;
	nfsi->last_updated = now;

	/* Fix a wraparound issue with nfsi->cache_change_attribute */
	if (time_before(now, nfsi->cache_change_attribute))
		nfsi->cache_change_attribute = now - 600*HZ;

	/* Are we racing with known updates of the metadata on the server? */
	data_stable = nfs_verify_change_attribute(inode, fattr->time_start);
	nfsi->cache_validity &= ~(NFS_INO_INVALID_ATTR | NFS_INO_INVALID_ATIME
+1 −1
Original line number Diff line number Diff line
@@ -277,7 +277,7 @@ static inline long nfs_save_change_attribute(struct inode *inode)
static inline int nfs_verify_change_attribute(struct inode *inode, unsigned long chattr)
{
	return !nfs_caches_unstable(inode)
		&& time_after_eq(chattr, NFS_I(inode)->cache_change_attribute);
		&& chattr == NFS_I(inode)->cache_change_attribute;
}

/*