[OpenAFS-devel] Linux cache manager throwing away callbacks
Simon Wilkinson
sxw@inf.ed.ac.uk
Mon, 19 Jan 2009 10:57:50 +0000
Hi,
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?
Cheers,
Simon.