- simple_lock(&mntvnode_slock);
-again:
- for (vp = mp->mnt_vnodelist.lh_first; vp != NULL; vp = nextvp) {
- if (vp->v_mount != mp)
- goto again;
- nextvp = vp->v_mntvnodes.le_next;
- simple_lock(&vp->v_interlock);
- simple_unlock(&mntvnode_slock);
- error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK, p);
- if (error) {
- simple_lock(&mntvnode_slock);
- if (error == ENOENT)
- goto again;
- continue;
- }
-
- /* Make sure that this is really an hfs vnode. */
- if (vp->v_mount != mp ||
- vp->v_type == VNON ||
- vp->v_tag != VT_HFS ||
- VTOC(vp) == NULL) {
- vput(vp);
- simple_lock(&mntvnode_slock);
- goto again;
- }
+ vnode_iterate(mp, 0, hfs_qsync_callback, (void *)NULL);