I don't understand why we do this. I don't think it's needed at all because if the file really is deleted and the inode is getting cleaned out, then it shouldn't be getting new refs in any of the usual ways and we don't need to worry about it. And in any case the vnode lock prevents anyone from messing with the inode during VOP_INACTIVE().
I want to change this because it causes nasty problems on MP. For example I see threads very regulary thrown out of the namecache by vcache_vtryget(), and when they finally get the vnode ref'd and locked they do it by digging through the file system metadata (when everything is already in cache). http://www.netbsd.org/~ad/inactive.diff What am I missing here? Is there a buggy file system or something like that? Cheers, Andrew