[OpenAFS-devel] Linux cache manager throwing away callbacks
Chas Williams (CONTRACTOR)
chas@cmf.nrl.navy.mil
Mon, 19 Jan 2009 07:39:26 -0500
In message <0FEB2A81-B2DA-4705-A5AE-6F35904E4C53@inf.ed.ac.uk>,Simon Wilkinson
writes:
>I think I've found a bug in the Linux CM, which causes a busy machine
>to prematurely throw away callbacks. The cache manager implements its
>own version of dentry_iput, which calls afs_InactiveVcache, which in
>turn discards any callbacks for that vcache. Unfortunately, it appears
>that dentry_iput is called whenever the kernel is dereferencing a
>dentry, which it does pretty frequently if you're doing a lot of file
>system operations. Originally InactiveVCache was only called if the
>refcount was going from 2->1 (meaning the only active copy of the
>inode is on the AFS LRU queue), or if the vcache was marked as being
>unlinked, but linux-dentry-iput-20060813 removed this logic in favour
>of always calling InactiveVCache.
>
>Anyone know the history behind any of this?
if you find the patch in the browse source, then you can click on the
FIXES link to bug 37576. the patch in question removes the refcount
test around the .put_inode, not .dentry_iput. so your report is at best
confusing to me.
https://rt.central.org/rt/Ticket/Display.html?user=guest&pass=guest&id=37576
i dont think afs_InactiveVCache() specifically clears any callbacks.
however, it probably does make the vnode ready for recycling.