Index: vfs_subr.c =================================================================== RCS file: /home/ncvs/src/sys/kern/vfs_subr.c,v retrieving revision 1.624 diff -u -r1.624 vfs_subr.c --- vfs_subr.c 6 May 2005 02:48:20 -0000 1.624 +++ vfs_subr.c 10 May 2005 03:22:38 -0000 @@ -2660,6 +2660,7 @@ { struct mount *mp; struct thread *td; + struct vnode *vp; int error; KASSERT(curthread != NULL, ("vfs_unmountall: NULL curthread")); @@ -2669,6 +2670,24 @@ */ while(!TAILQ_EMPTY(&mountlist)) { mp = TAILQ_LAST(&mountlist, mntlist); + if(mp->mnt_nvnodelistsize > 0) + { + printf("vfs_unmountall: Processing %s:\n", + mp->mnt_stat.f_mntfromname); + + TAILQ_FOREACH(vp, &mp->mnt_nvnodelist, v_nmntvnodes) + { + /* vnodes that are of no interest: + * - a vnode with a usecount of 0 + * - vnode marked VV_ROOT + * - syncer vnode + */ + /* XXX vnode interlocking required? */ + if(vp->v_usecount && (vp != mp->mnt_syncer) && + !(vp->v_vflag & VV_ROOT)) + vn_printf(vp, "%s", ""); + } + } error = dounmount(mp, MNT_FORCE, td); if (error) { TAILQ_REMOVE(&mountlist, mp, mnt_list);