ext2_vnops.c (38292) | ext2_vnops.c (40790) |
---|---|
1/* 2 * modified for EXT2FS support in Lites 1.1 3 * 4 * Aug 1995, Godmar Back (gback@cs.utah.edu) 5 * University of Utah, Department of Computer Science 6 */ 7/* 8 * Copyright (c) 1982, 1986, 1989, 1993 --- 183 unchanged lines hidden (view full) --- 192 193 /* 194 * Flush all dirty buffers associated with a vnode. 195 */ 196 ext2_discard_prealloc(VTOI(vp)); 197 198loop: 199 s = splbio(); | 1/* 2 * modified for EXT2FS support in Lites 1.1 3 * 4 * Aug 1995, Godmar Back (gback@cs.utah.edu) 5 * University of Utah, Department of Computer Science 6 */ 7/* 8 * Copyright (c) 1982, 1986, 1989, 1993 --- 183 unchanged lines hidden (view full) --- 192 193 /* 194 * Flush all dirty buffers associated with a vnode. 195 */ 196 ext2_discard_prealloc(VTOI(vp)); 197 198loop: 199 s = splbio(); |
200 for (bp = vp->v_dirtyblkhd.lh_first; bp; bp = nbp) { 201 nbp = bp->b_vnbufs.le_next; | 200 for (bp = TAILQ_FIRST(&vp->v_dirtyblkhd); bp; bp = nbp) { 201 nbp = TAILQ_NEXT(bp, b_vnbufs); |
202 if ((bp->b_flags & B_BUSY)) 203 continue; 204 if ((bp->b_flags & B_DELWRI) == 0) 205 panic("ext2_fsync: not dirty"); 206 bremfree(bp); 207 bp->b_flags |= B_BUSY; 208 splx(s); 209 /* --- 7 unchanged lines hidden (view full) --- 217 goto loop; 218 } 219 if (ap->a_waitfor == MNT_WAIT) { 220 while (vp->v_numoutput) { 221 vp->v_flag |= VBWAIT; 222 tsleep(&vp->v_numoutput, PRIBIO + 1, "e2fsyn", 0); 223 } 224#if DIAGNOSTIC | 202 if ((bp->b_flags & B_BUSY)) 203 continue; 204 if ((bp->b_flags & B_DELWRI) == 0) 205 panic("ext2_fsync: not dirty"); 206 bremfree(bp); 207 bp->b_flags |= B_BUSY; 208 splx(s); 209 /* --- 7 unchanged lines hidden (view full) --- 217 goto loop; 218 } 219 if (ap->a_waitfor == MNT_WAIT) { 220 while (vp->v_numoutput) { 221 vp->v_flag |= VBWAIT; 222 tsleep(&vp->v_numoutput, PRIBIO + 1, "e2fsyn", 0); 223 } 224#if DIAGNOSTIC |
225 if (vp->v_dirtyblkhd.lh_first) { | 225 if (!TAILQ_EMPTY(&vp->v_dirtyblkhd)) { |
226 vprint("ext2_fsync: dirty", vp); 227 goto loop; 228 } 229#endif 230 } 231 splx(s); 232 getmicrotime(&tv); 233 return (UFS_UPDATE(ap->a_vp, &tv, &tv, ap->a_waitfor == MNT_WAIT)); --- 991 unchanged lines hidden --- | 226 vprint("ext2_fsync: dirty", vp); 227 goto loop; 228 } 229#endif 230 } 231 splx(s); 232 getmicrotime(&tv); 233 return (UFS_UPDATE(ap->a_vp, &tv, &tv, ap->a_waitfor == MNT_WAIT)); --- 991 unchanged lines hidden --- |