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 --- |