[OpenAFS-devel] osi_vfsops.c / afs_put_inode (LINUX) - editing bug?

Rainer Toebbicke rtb@pclella.cern.ch
Tue, 21 Feb 2006 09:35:12 +0100


I'm slightly worried about afs/LINUX/osi_vfsops.c, function afs_put_inode.


The code in 1.4.1-rc7 looks a bit odd:

     if (VREFCOUNT(vcp) == 2) {
         if (VREFCOUNT(vcp) == 2)
             afs_InactiveVCache(vcp, NULL);

The double-making-sure that VREFCOUNT(vcp) == 2 looks like an editing 
bug.

More seriously however, afs_InactiveVCache() through the subsequently 
called afs_InvalidateAllSegments() needs the vnode to be locked. I'm 
worried that given that this is an upcall from the kernel this might 
not always be the case, e.g. when invoked through afs_linux_lookup().

(Besides I still believe this function can be called with the global 
lock already held and thus deadlock, but this is another story.)

-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Rainer Toebbicke
European Laboratory for Particle Physics(CERN) - Geneva, Switzerland
Phone: +41 22 767 8985       Fax: +41 22 767 7155