summaryrefslogtreecommitdiffstats
path: root/sys/gnu/ext2fs
diff options
context:
space:
mode:
Diffstat (limited to 'sys/gnu/ext2fs')
-rw-r--r--sys/gnu/ext2fs/ext2_bmap.c6
-rw-r--r--sys/gnu/ext2fs/ext2_inode.c3
-rw-r--r--sys/gnu/ext2fs/ext2_readwrite.c9
3 files changed, 11 insertions, 7 deletions
diff --git a/sys/gnu/ext2fs/ext2_bmap.c b/sys/gnu/ext2fs/ext2_bmap.c
index c8b3cd4..2b2531d 100644
--- a/sys/gnu/ext2fs/ext2_bmap.c
+++ b/sys/gnu/ext2fs/ext2_bmap.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_bmap.c 8.6 (Berkeley) 1/21/94
- * $Id: ufs_bmap.c,v 1.9 1995/09/04 00:21:09 dyson Exp $
+ * $Id: ufs_bmap.c,v 1.10 1995/11/05 23:07:37 dyson Exp $
*/
#include <sys/param.h>
@@ -188,7 +188,7 @@ ufs_bmaparray(vp, bn, bnp, ap, nump, runp, runb)
* or we have a disk address for it, go fetch it.
*/
if (bp)
- brelse(bp);
+ bqrelse(bp);
xap->in_exists = 1;
bp = getblk(vp, metalbn, mp->mnt_stat.f_iosize, 0, 0);
@@ -226,7 +226,7 @@ ufs_bmaparray(vp, bn, bnp, ap, nump, runp, runb)
}
}
if (bp)
- brelse(bp);
+ bqrelse(bp);
daddr = blkptrtodb(ump, daddr);
*bnp = daddr == 0 ? -1 : daddr;
diff --git a/sys/gnu/ext2fs/ext2_inode.c b/sys/gnu/ext2fs/ext2_inode.c
index 2b40d37..74aebaa 100644
--- a/sys/gnu/ext2fs/ext2_inode.c
+++ b/sys/gnu/ext2fs/ext2_inode.c
@@ -216,7 +216,6 @@ printf("ext2_truncate called %d to %d\n", VTOI(ovp)->i_number, ap->a_length);
if (error = getinoquota(oip))
return (error);
#endif
- vnode_pager_setsize(ovp, (u_long)length);
fs = oip->i_e2fs;
osize = oip->i_size;
ext2_discard_prealloc(oip);
@@ -231,6 +230,7 @@ printf("ext2_truncate called %d to %d\n", VTOI(ovp)->i_number, ap->a_length);
aflags = B_CLRBUF;
if (ap->a_flags & IO_SYNC)
aflags |= B_SYNC;
+ vnode_pager_setsize(ovp, length);
if (error = ext2_balloc(oip, lbn, offset + 1, ap->a_cred, &bp,
aflags))
return (error);
@@ -405,6 +405,7 @@ done:
if (oip->i_blocks < 0) /* sanity */
oip->i_blocks = 0;
oip->i_flag |= IN_CHANGE;
+ vnode_pager_setsize(ovp, length);
#if QUOTA
(void) chkdq(oip, -blocksreleased, NOCRED, 0);
#endif
diff --git a/sys/gnu/ext2fs/ext2_readwrite.c b/sys/gnu/ext2fs/ext2_readwrite.c
index 093f7fb..478f0d2 100644
--- a/sys/gnu/ext2fs/ext2_readwrite.c
+++ b/sys/gnu/ext2fs/ext2_readwrite.c
@@ -120,8 +120,11 @@ READ(ap)
size, &nextlbn, &nextsize, 1, NOCRED, &bp);
} else
error = bread(vp, lbn, size, NOCRED, &bp);
- if (error)
+ if (error) {
+ brelse(bp);
+ bp = NULL;
break;
+ }
vp->v_lastr = lbn;
/*
@@ -148,10 +151,10 @@ READ(ap)
uio->uio_offset == ip->i_size))
bp->b_flags |= B_AGE;
#endif
- brelse(bp);
+ bqrelse(bp);
}
if (bp != NULL)
- brelse(bp);
+ bqrelse(bp);
ip->i_flag |= IN_ACCESS;
return (error);
}
OpenPOWER on IntegriCloud