Changeset View
Changeset View
Standalone View
Standalone View
sys/fs/msdosfs/msdosfs_vfsops.c
| Show First 20 Lines • Show All 1,010 Lines • ▼ Show 20 Lines | if (pmp->pm_flags & MSDOSFSMNT_RONLY) | ||||
| panic("msdosfs_sync: rofs mod"); | panic("msdosfs_sync: rofs mod"); | ||||
| else { | else { | ||||
| /* update FATs here */ | /* update FATs here */ | ||||
| } | } | ||||
| } | } | ||||
| /* | /* | ||||
| * Write back each (modified) denode. | * Write back each (modified) denode. | ||||
| */ | */ | ||||
| loop: | |||||
| MNT_VNODE_FOREACH_ALL(vp, mp, nvp) { | MNT_VNODE_FOREACH_ALL(vp, mp, nvp) { | ||||
| if (vp->v_type == VNON) { | if (vp->v_type == VNON) { | ||||
| VI_UNLOCK(vp); | VI_UNLOCK(vp); | ||||
| continue; | continue; | ||||
| } | } | ||||
| dep = VTODE(vp); | dep = VTODE(vp); | ||||
| if ((dep->de_flag & | if ((dep->de_flag & | ||||
| (DE_ACCESS | DE_CREATE | DE_UPDATE | DE_MODIFIED)) == 0 && | (DE_ACCESS | DE_CREATE | DE_UPDATE | DE_MODIFIED)) == 0 && | ||||
| (vp->v_bufobj.bo_dirty.bv_cnt == 0 || | (vp->v_bufobj.bo_dirty.bv_cnt == 0 || | ||||
| waitfor == MNT_LAZY)) { | waitfor == MNT_LAZY)) { | ||||
| VI_UNLOCK(vp); | VI_UNLOCK(vp); | ||||
| continue; | continue; | ||||
| } | } | ||||
| error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK); | error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK); | ||||
| if (error) { | if (error != 0) { | ||||
| if (error == ENOENT) { | |||||
| MNT_VNODE_FOREACH_ALL_ABORT(mp, nvp); | |||||
| goto loop; | |||||
| } | |||||
| continue; | continue; | ||||
| } | } | ||||
| error = VOP_FSYNC(vp, waitfor, td); | error = VOP_FSYNC(vp, waitfor, td); | ||||
| if (error) | if (error) | ||||
| allerror = error; | allerror = error; | ||||
| vput(vp); | vput(vp); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 54 Lines • Show Last 20 Lines | |||||