summaryrefslogtreecommitdiffstats
path: root/sys/ufs/ffs/ffs_vnops.c
diff options
context:
space:
mode:
authordyson <dyson@FreeBSD.org>1998-03-19 22:49:44 +0000
committerdyson <dyson@FreeBSD.org>1998-03-19 22:49:44 +0000
commitaa402e9a1a41ec34147c5fa984b24bd2d6202a58 (patch)
treedec4a57990b5ae3bcb5e8d281ef03059ada9d2ec /sys/ufs/ffs/ffs_vnops.c
parent9c4b0fed795de7308bd3b61a4752a5711e21cf8f (diff)
downloadFreeBSD-src-aa402e9a1a41ec34147c5fa984b24bd2d6202a58.zip
FreeBSD-src-aa402e9a1a41ec34147c5fa984b24bd2d6202a58.tar.gz
Fix vfs_bio_awrite usage, and correct vtruncbuf usage.
Diffstat (limited to 'sys/ufs/ffs/ffs_vnops.c')
-rw-r--r--sys/ufs/ffs/ffs_vnops.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
index 44db8f4..8e2c218 100644
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ffs_vnops.c 8.15 (Berkeley) 5/14/95
- * $Id: ffs_vnops.c,v 1.43 1998/02/26 06:39:38 msmith Exp $
+ * $Id: ffs_vnops.c,v 1.44 1998/03/08 09:59:10 julian Exp $
*/
#include <sys/param.h>
@@ -166,9 +166,6 @@ loop2:
*/
if (((bp->b_vp != vp) || (ap->a_waitfor == MNT_WAIT)) ||
((vp->v_type != VREG) && (vp->v_type != VBLK))) {
- bremfree(bp);
- bp->b_flags |= B_BUSY;
- splx(s);
/*
* Wait for I/O associated with indirect blocks to
@@ -177,12 +174,18 @@ loop2:
*/
if ((bp->b_vp == vp) || (ap->a_waitfor != MNT_WAIT)) {
if (bp->b_flags & B_CLUSTEROK) {
- bdwrite(bp);
(void) vfs_bio_awrite(bp);
+ splx(s);
} else {
+ bremfree(bp);
+ bp->b_flags |= B_BUSY;
+ splx(s);
(void) bawrite(bp);
}
} else {
+ bremfree(bp);
+ bp->b_flags |= B_BUSY;
+ splx(s);
(void) bwrite(bp);
}
} else if ((vp->v_type == VREG) && (bp->b_lblkno >= lbn)) {
@@ -214,7 +217,7 @@ loop2:
s = splbio();
while (vp->v_numoutput) {
vp->v_flag |= VBWAIT;
- (void) tsleep((caddr_t)&vp->v_numoutput, PRIBIO + 1, "ffsfsn", 0);
+ (void) tsleep((caddr_t)&vp->v_numoutput, PRIBIO + 4, "ffsfsn", 0);
}
/*
* Ensure that any filesystem metatdata associated
OpenPOWER on IntegriCloud