Index: sys/fs/ext2fs/ext2_vfsops.c =================================================================== --- sys/fs/ext2fs/ext2_vfsops.c +++ sys/fs/ext2fs/ext2_vfsops.c @@ -1141,7 +1141,6 @@ /* * Write back each (modified) inode. */ -loop: MNT_VNODE_FOREACH_ALL(vp, mp, mvp) { if (vp->v_type == VNON) { VI_UNLOCK(vp); @@ -1156,11 +1155,7 @@ continue; } error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK); - if (error) { - if (error == ENOENT) { - MNT_VNODE_FOREACH_ALL_ABORT(mp, mvp); - goto loop; - } + if (error != 0) { continue; } if ((error = VOP_FSYNC(vp, waitfor, td)) != 0) Index: sys/fs/msdosfs/msdosfs_vfsops.c =================================================================== --- sys/fs/msdosfs/msdosfs_vfsops.c +++ sys/fs/msdosfs/msdosfs_vfsops.c @@ -1016,7 +1016,6 @@ /* * Write back each (modified) denode. */ -loop: MNT_VNODE_FOREACH_ALL(vp, mp, nvp) { if (vp->v_type == VNON) { VI_UNLOCK(vp); @@ -1031,11 +1030,7 @@ continue; } error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK); - if (error) { - if (error == ENOENT) { - MNT_VNODE_FOREACH_ALL_ABORT(mp, nvp); - goto loop; - } + if (error != 0) { continue; } error = VOP_FSYNC(vp, waitfor, td); Index: sys/fs/nfsclient/nfs_clvfsops.c =================================================================== --- sys/fs/nfsclient/nfs_clvfsops.c +++ sys/fs/nfsclient/nfs_clvfsops.c @@ -1921,7 +1921,6 @@ /* * Force stale buffer cache information to be flushed. */ -loop: MNT_VNODE_FOREACH_ALL(vp, mp, mvp) { /* XXX Racy bv_cnt check. */ if (NFSVOPISLOCKED(vp) || vp->v_bufobj.bo_dirty.bv_cnt == 0 || @@ -1929,9 +1928,8 @@ VI_UNLOCK(vp); continue; } - if (vget(vp, LK_EXCLUSIVE | LK_INTERLOCK)) { - MNT_VNODE_FOREACH_ALL_ABORT(mp, mvp); - goto loop; + if (vget(vp, LK_EXCLUSIVE | LK_INTERLOCK) != 0) { + continue; } error = VOP_FSYNC(vp, waitfor, td); if (error) Index: sys/kern/vfs_default.c =================================================================== --- sys/kern/vfs_default.c +++ sys/kern/vfs_default.c @@ -1523,17 +1523,12 @@ /* * Force stale buffer cache information to be flushed. */ -loop: MNT_VNODE_FOREACH_ALL(vp, mp, mvp) { if (vp->v_bufobj.bo_dirty.bv_cnt == 0) { VI_UNLOCK(vp); continue; } if ((error = vget(vp, lockreq)) != 0) { - if (error == ENOENT) { - MNT_VNODE_FOREACH_ALL_ABORT(mp, mvp); - goto loop; - } continue; } error = VOP_FSYNC(vp, waitfor, td); Index: sys/ufs/ffs/ffs_vfsops.c =================================================================== --- sys/ufs/ffs/ffs_vfsops.c +++ sys/ufs/ffs/ffs_vfsops.c @@ -1713,7 +1713,7 @@ } if (waitfor == MNT_WAIT) lockreq = LK_EXCLUSIVE; - lockreq |= LK_INTERLOCK | LK_SLEEPFAIL; + lockreq |= LK_INTERLOCK; loop: /* Grab snapshot of secondary write counts */ MNT_ILOCK(mp); @@ -1743,10 +1743,6 @@ continue; } if ((error = vget(vp, lockreq)) != 0) { - if (error == ENOENT || error == ENOLCK) { - MNT_VNODE_FOREACH_ALL_ABORT(mp, mvp); - goto loop; - } continue; } #ifdef QUOTA