On Tue Aug 17 2010 at 13:17:48 +0000, Juergen Hannken-Illjes wrote: > Module Name: src > Committed By: hannken > Date: Tue Aug 17 13:17:48 UTC 2010 > > Modified Files: > src/sys/kern: vfs_subr.c > > Log Message: > Now that ffs on disk inodes get freed in the reclaim routine it is no longer > necessary for vget() to handle VI_INACTNOW as a special case. Remove this > check and its support in vrelel().
Hi, I didn't fully review your changes, so just to make sure: it's still possible to gain a reference during inactive, right? > Getting another reference while the freelist is locked is an error. Replace > the check with a KASSERT. > > vp->v_freelisthd = NULL; > mutex_exit(&vnode_free_list_lock); > > - if (vp->v_usecount != 0) { > - /* > - * was referenced again before we got the interlock > - * Don't return to freelist - the holder of the last > - * reference will destroy it. > - */ > - mutex_exit(&vp->v_interlock); > - mutex_enter(&vnode_free_list_lock); > - goto retry; > - } > + KASSERT(vp->v_usecount == 0); It's not obvious from your commit message what prevents it from gaining a reference after the lock is dropped.