Deleted Added
full compact
msdosfs_vfsops.c (70536) msdosfs_vfsops.c (71576)
1/* $FreeBSD: head/sys/fs/msdosfs/msdosfs_vfsops.c 70536 2000-12-31 10:24:19Z phk $ */
1/* $FreeBSD: head/sys/fs/msdosfs/msdosfs_vfsops.c 71576 2001-01-24 12:35:55Z jasone $ */
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).
9 *

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

56#include <sys/kernel.h>
57#include <sys/vnode.h>
58#include <sys/mount.h>
59#include <sys/bio.h>
60#include <sys/buf.h>
61#include <sys/fcntl.h>
62#include <sys/malloc.h>
63#include <sys/stat.h> /* defines ALLPERMS */
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).
9 *

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

56#include <sys/kernel.h>
57#include <sys/vnode.h>
58#include <sys/mount.h>
59#include <sys/bio.h>
60#include <sys/buf.h>
61#include <sys/fcntl.h>
62#include <sys/malloc.h>
63#include <sys/stat.h> /* defines ALLPERMS */
64#include <sys/mutex.h>
64
65
65#include <machine/mutex.h>
66
67#include <msdosfs/bpb.h>
68#include <msdosfs/bootsect.h>
69#include <msdosfs/direntry.h>
70#include <msdosfs/denode.h>
71#include <msdosfs/msdosfsmount.h>
72#include <msdosfs/fat.h>
73
74#define MSDOSFS_DFLTBSIZE 4096

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

858 panic("msdosfs_sync: rofs mod");
859 else {
860 /* update fats here */
861 }
862 }
863 /*
864 * Write back each (modified) denode.
865 */
66#include <msdosfs/bpb.h>
67#include <msdosfs/bootsect.h>
68#include <msdosfs/direntry.h>
69#include <msdosfs/denode.h>
70#include <msdosfs/msdosfsmount.h>
71#include <msdosfs/fat.h>
72
73#define MSDOSFS_DFLTBSIZE 4096

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

857 panic("msdosfs_sync: rofs mod");
858 else {
859 /* update fats here */
860 }
861 }
862 /*
863 * Write back each (modified) denode.
864 */
866 simple_lock(&mntvnode_slock);
865 mtx_enter(&mntvnode_mtx, MTX_DEF);
867loop:
868 for (vp = LIST_FIRST(&mp->mnt_vnodelist); vp != NULL; vp = nvp) {
869 /*
870 * If the vnode that we are about to sync is no longer
871 * associated with this mount point, start over.
872 */
873 if (vp->v_mount != mp)
874 goto loop;
875
876 mtx_enter(&vp->v_interlock, MTX_DEF);
877 nvp = LIST_NEXT(vp, v_mntvnodes);
878 dep = VTODE(vp);
879 if (vp->v_type == VNON ||
880 ((dep->de_flag &
881 (DE_ACCESS | DE_CREATE | DE_UPDATE | DE_MODIFIED)) == 0 &&
882 (TAILQ_EMPTY(&vp->v_dirtyblkhd) || waitfor == MNT_LAZY))) {
883 mtx_exit(&vp->v_interlock, MTX_DEF);
884 continue;
885 }
866loop:
867 for (vp = LIST_FIRST(&mp->mnt_vnodelist); vp != NULL; vp = nvp) {
868 /*
869 * If the vnode that we are about to sync is no longer
870 * associated with this mount point, start over.
871 */
872 if (vp->v_mount != mp)
873 goto loop;
874
875 mtx_enter(&vp->v_interlock, MTX_DEF);
876 nvp = LIST_NEXT(vp, v_mntvnodes);
877 dep = VTODE(vp);
878 if (vp->v_type == VNON ||
879 ((dep->de_flag &
880 (DE_ACCESS | DE_CREATE | DE_UPDATE | DE_MODIFIED)) == 0 &&
881 (TAILQ_EMPTY(&vp->v_dirtyblkhd) || waitfor == MNT_LAZY))) {
882 mtx_exit(&vp->v_interlock, MTX_DEF);
883 continue;
884 }
886 simple_unlock(&mntvnode_slock);
885 mtx_exit(&mntvnode_mtx, MTX_DEF);
887 error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK, p);
888 if (error) {
886 error = vget(vp, LK_EXCLUSIVE | LK_NOWAIT | LK_INTERLOCK, p);
887 if (error) {
889 simple_lock(&mntvnode_slock);
888 mtx_enter(&mntvnode_mtx, MTX_DEF);
890 if (error == ENOENT)
891 goto loop;
892 continue;
893 }
894 error = VOP_FSYNC(vp, cred, waitfor, p);
895 if (error)
896 allerror = error;
897 VOP_UNLOCK(vp, 0, p);
898 vrele(vp);
889 if (error == ENOENT)
890 goto loop;
891 continue;
892 }
893 error = VOP_FSYNC(vp, cred, waitfor, p);
894 if (error)
895 allerror = error;
896 VOP_UNLOCK(vp, 0, p);
897 vrele(vp);
899 simple_lock(&mntvnode_slock);
898 mtx_enter(&mntvnode_mtx, MTX_DEF);
900 }
899 }
901 simple_unlock(&mntvnode_slock);
900 mtx_exit(&mntvnode_mtx, MTX_DEF);
902
903 /*
904 * Flush filesystem control info.
905 */
906 if (waitfor != MNT_LAZY) {
907 vn_lock(pmp->pm_devvp, LK_EXCLUSIVE | LK_RETRY, p);
908 error = VOP_FSYNC(pmp->pm_devvp, cred, waitfor, p);
909 if (error)

--- 79 unchanged lines hidden ---
901
902 /*
903 * Flush filesystem control info.
904 */
905 if (waitfor != MNT_LAZY) {
906 vn_lock(pmp->pm_devvp, LK_EXCLUSIVE | LK_RETRY, p);
907 error = VOP_FSYNC(pmp->pm_devvp, cred, waitfor, p);
908 if (error)

--- 79 unchanged lines hidden ---