--- linux-2.4.20/fs/nfs/inode.c.diff 2003-05-17 18:21:35.000000000 -0400 +++ linux-2.4.20/fs/nfs/inode.c 2003-05-19 11:22:05.000000000 -0400 @@ -1096,6 +1096,12 @@ NFS_READTIME(inode) = fattr->timestamp; /* + * If need be, update the last time the mtime was changed + */ + if (time_after(fattr->timestamp, NFS_MTIME_UPDATE(inode))) + NFS_MTIME_UPDATE(inode) = fattr->timestamp; + + /* * Note: NFS_CACHE_ISIZE(inode) reflects the state of the cache. * NOT inode->i_size!!! */ @@ -1142,8 +1148,6 @@ inode->i_atime = new_atime; if (NFS_CACHE_MTIME(inode) != new_mtime) { - if (invalid) - NFS_MTIME_UPDATE(inode) = fattr->timestamp; NFS_CACHE_MTIME(inode) = new_mtime; inode->i_mtime = nfs_time_to_secs(new_mtime); }