[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