[OpenAFS-devel] understanding afs_remunlink() and why .__afsXXX don't get cleaned up

Adam Megacz megacz@cs.berkeley.edu
Mon, 01 Jan 2007 18:33:56 -0800


A while back I posted about how the Mac client currently does not
remove its .__afsXXX droppings.  I've been trying to hunt down the
cause.

In afs_vnop_remove.c:afs_remove() I'm having a bit of trouble
understanding the difference between "adp" and "tvc" (and where on
earth the "ndp" identifier comes from).

What seems to be happening is that the CUnlinked bit gets set on tvc
but not adp.  This appears to be intentional.  However,
afs_InactiveVCache() never seems to get invoked on that tvc, though it
does get invoked on adp.  Hacking afs_remove() to set the bit on adp
causes afs_remove() to get much farther along, apparently up until
avc->mvid==0 is checked.

Any hints?

BTW, where is "struct vcache*" declared, anyways?

In all the previous stuff when I say "tvc" I actually mean "or some
other struct vcache* whose fid.Fid member equals that member on tvc"

  - a

-- 
PGP/GPG: 5C9F F366 C9CF 2145 E770  B1B8 EFB1 462D A146 C380