[OpenAFS-devel] Linux 2.6.12 kernel BUG at fs/namei.c:1189

chas williams - CONTRACTOR chas@cmf.nrl.navy.mil
Sat, 28 Jan 2006 14:57:47 -0500


In message <43D116B5.5060900@pclella.cern.ch>,Rainer Toebbicke writes:
>Well, the way afs_put_inode clicks into standard kernel business is 
>pretty much kernel-specific. It was instructive to try and understand 
>the difference in Irix, OSF and AIX just to see that things are not 
>always obvious (and clean).

linux's vfs isnt very much like irix, osf, aix or solaris.  it
revolves around the dentry instead of the inode.  since most ports
of afs have been to bsd derived vfs filesystems, there are few
alternative filesystems to examine.

>A relatively kernel-unspecific way would be to queue an event that is 
>handled "later" by somebody running near top level. The question is a) 
>how to queue without a lock and b) whether sometimes things must 

what would be queued?  checking the inode to see if its time to go away
or the decrement of the refCount?  queuing a .put_inode() probably isnt
a good idea.  sleeping in .put_inode() seems to be allowed, but the
documentation for .put_inode() isn't quite right either:

  put_inode: called when the VFS inode is removed from the inode
        cache. This method is optional

.put_inode() is called for every iput, regardless of whether the
inode is being removed from the cache.

have you tried the patch i sent along in a previous message?  hopefully
this should fix the problem (it will certainly take AFS_GLOCK less often).