diff options
author | Kirk McKusick <mckusick@FreeBSD.org> | 2012-04-17 16:28:22 +0000 |
---|---|---|
committer | Kirk McKusick <mckusick@FreeBSD.org> | 2012-04-17 16:28:22 +0000 |
commit | 71469bb38f7440f7bdae7452672091fed324cda3 (patch) | |
tree | 0e74691cb191897ed22ab84b20109f1b4147b16d /sys/fs/msdosfs | |
parent | 9e21ef395ab886d44f9c6f369a00811fe0e474d5 (diff) | |
download | src-71469bb38f7440f7bdae7452672091fed324cda3.tar.gz src-71469bb38f7440f7bdae7452672091fed324cda3.zip |
Notes
Diffstat (limited to 'sys/fs/msdosfs')
-rw-r--r-- | sys/fs/msdosfs/msdosfs_vfsops.c | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/sys/fs/msdosfs/msdosfs_vfsops.c b/sys/fs/msdosfs/msdosfs_vfsops.c index f8eb317fae73..d2f49d986cee 100644 --- a/sys/fs/msdosfs/msdosfs_vfsops.c +++ b/sys/fs/msdosfs/msdosfs_vfsops.c @@ -923,27 +923,22 @@ msdosfs_sync(struct mount *mp, int waitfor) /* * Write back each (modified) denode. */ - MNT_ILOCK(mp); loop: - MNT_VNODE_FOREACH(vp, mp, nvp) { - VI_LOCK(vp); - if (vp->v_type == VNON || (vp->v_iflag & VI_DOOMED)) { + MNT_VNODE_FOREACH_ALL(vp, mp, nvp) { + if (vp->v_type == VNON) { VI_UNLOCK(vp); continue; } - MNT_IUNLOCK(mp); dep = VTODE(vp); if ((dep->de_flag & (DE_ACCESS | DE_CREATE | DE_UPDATE | DE_MODIFIED)) == 0 && (vp->v_bufobj.bo_dirty.bv_cnt == 0 || waitfor == MNT_LAZY)) { VI_UNLOCK(vp); - MNT_ILOCK(mp); continue; } error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK, td); if (error) { - MNT_ILOCK(mp); if (error == ENOENT) goto loop; continue; @@ -953,9 +948,7 @@ loop: allerror = error; VOP_UNLOCK(vp, 0); vrele(vp); - MNT_ILOCK(mp); } - MNT_IUNLOCK(mp); /* * Flush filesystem control info. |