On Mon, 2008-05-05 at 11:02 -0400, Chuck Lever wrote: > Hi Trond- > > On May 2, 2008, at 4:25 PM, Trond Myklebust wrote: > > Both the 'noac' and 'actimeo=0' mount options should ensure that > > attributes > > are not cached, however a bug in nfs_attribute_timeout() means that > > currently, the attributes may in fact get cached for up to one > > jiffy. This > > has been seen to cause corruption in some applications. > > > > The reason for the bug is that the time_in_range() test returns > > 'true' as > > long as the current time lies between nfsi->read_cache_jiffies and > > nfsi->read_cache_jiffies + nfsi->attrtimeo. In other words, if jiffies > > equals nfsi->read_cache_jiffies, then we still cache the attribute > > data. > > > > Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> > > --- > > > > fs/nfs/inode.c | 7 +++++++ > > 1 files changed, 7 insertions(+), 0 deletions(-) > > > > diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c > > index 5cb3345..38f06d3 100644 > > --- a/fs/nfs/inode.c > > +++ b/fs/nfs/inode.c > > @@ -707,6 +707,13 @@ int nfs_attribute_timeout(struct inode *inode) > > > > if (nfs_have_delegation(inode, FMODE_READ)) > > return 0; > > + /* > > + * Special case: if the attribute timeout is set to 0, then we > > + * treat the cache as having expired (unless we > > + * have a delegation). > > + */ > > + if (nfsi->attrtimeo == 0) > > + return 1; > > return !time_in_range(jiffies, nfsi->read_cache_jiffies, nfsi- > > >read_cache_jiffies + nfsi->attrtimeo); > > } > > Do nfs_access_get_cached() and nfs_update_inode() have the same issue? nfs_access_get_cached() probably has the same issue, but I can't see how nfs_update_inode() would. Could you explain? -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html