Deleted Added
full compact
msdosfs_vnops.c (39128) msdosfs_vnops.c (40790)
1/* $Id: msdosfs_vnops.c,v 1.75 1998/07/11 07:45:50 bde Exp $ */
1/* $Id: msdosfs_vnops.c,v 1.76 1998/09/13 15:39:01 dt Exp $ */
2/* $NetBSD: msdosfs_vnops.c,v 1.68 1998/02/10 14:10:04 mrg 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 *

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

830 int s;
831 struct buf *bp, *nbp;
832
833 /*
834 * Flush all dirty buffers associated with a vnode.
835 */
836loop:
837 s = splbio();
2/* $NetBSD: msdosfs_vnops.c,v 1.68 1998/02/10 14:10:04 mrg 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 *

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

830 int s;
831 struct buf *bp, *nbp;
832
833 /*
834 * Flush all dirty buffers associated with a vnode.
835 */
836loop:
837 s = splbio();
838 for (bp = vp->v_dirtyblkhd.lh_first; bp; bp = nbp) {
839 nbp = bp->b_vnbufs.le_next;
838 for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) {
839 nbp = TAILQ_NEXT(bp, b_vnbufs);
840 if ((bp->b_flags & B_BUSY))
841 continue;
842 if ((bp->b_flags & B_DELWRI) == 0)
843 panic("msdosfs_fsync: not dirty");
844 bremfree(bp);
845 bp->b_flags |= B_BUSY;
846 splx(s);
847 (void) bwrite(bp);
848 goto loop;
849 }
850 while (vp->v_numoutput) {
851 vp->v_flag |= VBWAIT;
852 (void) tsleep((caddr_t)&vp->v_numoutput, PRIBIO + 1, "msdosfsn", 0);
853 }
854#ifdef DIAGNOSTIC
840 if ((bp->b_flags & B_BUSY))
841 continue;
842 if ((bp->b_flags & B_DELWRI) == 0)
843 panic("msdosfs_fsync: not dirty");
844 bremfree(bp);
845 bp->b_flags |= B_BUSY;
846 splx(s);
847 (void) bwrite(bp);
848 goto loop;
849 }
850 while (vp->v_numoutput) {
851 vp->v_flag |= VBWAIT;
852 (void) tsleep((caddr_t)&vp->v_numoutput, PRIBIO + 1, "msdosfsn", 0);
853 }
854#ifdef DIAGNOSTIC
855 if (vp->v_dirtyblkhd.lh_first) {
855 if (!TAILQ_EMPTY(&vp->v_dirtyblkhd)) {
856 vprint("msdosfs_fsync: dirty", vp);
857 goto loop;
858 }
859#endif
860 splx(s);
861 return (deupdat(VTODE(vp), ap->a_waitfor == MNT_WAIT));
862}
863

--- 1113 unchanged lines hidden ---
856 vprint("msdosfs_fsync: dirty", vp);
857 goto loop;
858 }
859#endif
860 splx(s);
861 return (deupdat(VTODE(vp), ap->a_waitfor == MNT_WAIT));
862}
863

--- 1113 unchanged lines hidden ---