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
_______________________________________________
OpenAFS-devel mailing list
[email protected]
https://lists.openafs.org/mailman/listinfo/openafs-devel

Reply via email to