msdosfs_vfsops.c (4ccd7546866d13c42b6d7339d42671baf7c38ff9) msdosfs_vfsops.c (797c3dba2521452f841141cd9637c428aa16430e)
1/* $FreeBSD$ */
2/* $NetBSD: msdosfs_vfsops.c,v 1.51 1997/11/17 15:36:58 ws Exp $ */
3
4/*-
5 * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
6 * Copyright (C) 1994, 1995, 1997 TooLs GmbH.
7 * All rights reserved.
8 * Original code by Paul Popelka (paulp@uts.amdahl.com) (see below).

--- 852 unchanged lines hidden (view full) ---

861loop:
862 for (vp = LIST_FIRST(&mp->mnt_vnodelist); vp != NULL; vp = nvp) {
863 /*
864 * If the vnode that we are about to sync is no longer
865 * associated with this mount point, start over.
866 */
867 if (vp->v_mount != mp)
868 goto loop;
1/* $FreeBSD$ */
2/* $NetBSD: msdosfs_vfsops.c,v 1.51 1997/11/17 15:36:58 ws Exp $ */
3
4/*-
5 * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
6 * Copyright (C) 1994, 1995, 1997 TooLs GmbH.
7 * All rights reserved.
8 * Original code by Paul Popelka (paulp@uts.amdahl.com) (see below).

--- 852 unchanged lines hidden (view full) ---

861loop:
862 for (vp = LIST_FIRST(&mp->mnt_vnodelist); vp != NULL; vp = nvp) {
863 /*
864 * If the vnode that we are about to sync is no longer
865 * associated with this mount point, start over.
866 */
867 if (vp->v_mount != mp)
868 goto loop;
869 nvp = LIST_NEXT(vp, v_mntvnodes);
869
870
871 mtx_unlock(&mntvnode_mtx);
870 mtx_lock(&vp->v_interlock);
872 mtx_lock(&vp->v_interlock);
871 nvp = LIST_NEXT(vp, v_mntvnodes);
872 dep = VTODE(vp);
873 if (vp->v_type == VNON ||
874 ((dep->de_flag &
875 (DE_ACCESS | DE_CREATE | DE_UPDATE | DE_MODIFIED)) == 0 &&
876 (TAILQ_EMPTY(&vp->v_dirtyblkhd) || waitfor == MNT_LAZY))) {
877 mtx_unlock(&vp->v_interlock);
873 dep = VTODE(vp);
874 if (vp->v_type == VNON ||
875 ((dep->de_flag &
876 (DE_ACCESS | DE_CREATE | DE_UPDATE | DE_MODIFIED)) == 0 &&
877 (TAILQ_EMPTY(&vp->v_dirtyblkhd) || waitfor == MNT_LAZY))) {
878 mtx_unlock(&vp->v_interlock);
879 mtx_lock(&mntvnode_mtx);
878 continue;
879 }
880 continue;
881 }
880 mtx_unlock(&mntvnode_mtx);
881 error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK, p);
882 if (error) {
883 mtx_lock(&mntvnode_mtx);
884 if (error == ENOENT)
885 goto loop;
886 continue;
887 }
888 error = VOP_FSYNC(vp, cred, waitfor, p);

--- 76 unchanged lines hidden ---
882 error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK, p);
883 if (error) {
884 mtx_lock(&mntvnode_mtx);
885 if (error == ENOENT)
886 goto loop;
887 continue;
888 }
889 error = VOP_FSYNC(vp, cred, waitfor, p);

--- 76 unchanged lines hidden ---