On Tue, Nov 27, 2012 at 11:59:05AM +0200, Andriy Gapon wrote: > on 27/11/2012 08:07 David Xu said the following: > > Author: davidxu > > Date: Tue Nov 27 06:07:58 2012 > > New Revision: 243599 > > URL: http://svnweb.freebsd.org/changeset/base/243599 > > > > Log: > > Take first active vnode correctly. > > > > Reviewed by: kib > > MFC after: 3 days > > > > Modified: > > head/sys/kern/vfs_subr.c > > > > Modified: head/sys/kern/vfs_subr.c > > ============================================================================== > > --- head/sys/kern/vfs_subr.c Tue Nov 27 06:01:02 2012 > > (r243598) > > +++ head/sys/kern/vfs_subr.c Tue Nov 27 06:07:58 2012 > > (r243599) > > @@ -4755,7 +4755,7 @@ __mnt_vnode_first_active(struct vnode ** > > MNT_REF(mp); > > (*mvp)->v_type = VMARKER; > > > > - vp = TAILQ_NEXT(*mvp, v_actfreelist); > > + vp = TAILQ_FIRST(&mp->mnt_activevnodelist); > > while (vp != NULL) { > > VI_LOCK(vp); > > if (vp->v_mount == mp && vp->v_type != VMARKER && > > > > Oh, wow, did this even work before? > Did it always just return NULL and no active list iteration happened?
Yes. Due to some redundancy in the VFS, the consequences were much less fatal than it could be.
pgpivysiwmpUl.pgp
Description: PGP signature