version 1.86.2.2, 2007/04/13 15:47:04 |
version 1.86.2.3, 2007/05/13 17:36:42 |
Line 119 ffs_update(struct vnode *vp, const struc |
|
Line 119 ffs_update(struct vnode *vp, const struc |
|
fsbtodb(fs, ino_to_fsba(fs, ip->i_number)), |
fsbtodb(fs, ino_to_fsba(fs, ip->i_number)), |
(int)fs->fs_bsize, NOCRED, &bp); |
(int)fs->fs_bsize, NOCRED, &bp); |
if (error) { |
if (error) { |
brelse(bp); |
brelse(bp, 0); |
return (error); |
return (error); |
} |
} |
ip->i_flag &= ~(IN_MODIFIED | IN_ACCESSED); |
ip->i_flag &= ~(IN_MODIFIED | IN_ACCESSED); |
Line 564 ffs_indirtrunc(struct inode *ip, daddr_t |
|
Line 564 ffs_indirtrunc(struct inode *ip, daddr_t |
|
*/ |
*/ |
vp = ITOV(ip); |
vp = ITOV(ip); |
bp = getblk(vp, lbn, (int)fs->fs_bsize, 0, 0); |
bp = getblk(vp, lbn, (int)fs->fs_bsize, 0, 0); |
|
mutex_enter(&bp->b_interlock); |
if (bp->b_flags & (B_DONE | B_DELWRI)) { |
if (bp->b_flags & (B_DONE | B_DELWRI)) { |
/* Braces must be here in case trace evaluates to nothing. */ |
/* Braces must be here in case trace evaluates to nothing. */ |
trace(TR_BREADHIT, pack(vp, fs->fs_bsize), lbn); |
trace(TR_BREADHIT, pack(vp, fs->fs_bsize), lbn); |
|
mutex_exit(&bp->b_interlock); |
} else { |
} else { |
trace(TR_BREADMISS, pack(vp, fs->fs_bsize), lbn); |
trace(TR_BREADMISS, pack(vp, fs->fs_bsize), lbn); |
curproc->p_stats->p_ru.ru_inblock++; /* pay for read */ |
curproc->p_stats->p_ru.ru_inblock++; /* pay for read */ |
Line 575 ffs_indirtrunc(struct inode *ip, daddr_t |
|
Line 577 ffs_indirtrunc(struct inode *ip, daddr_t |
|
panic("ffs_indirtrunc: bad buffer size"); |
panic("ffs_indirtrunc: bad buffer size"); |
bp->b_blkno = dbn; |
bp->b_blkno = dbn; |
BIO_SETPRIO(bp, BPRIO_TIMECRITICAL); |
BIO_SETPRIO(bp, BPRIO_TIMECRITICAL); |
|
mutex_exit(&bp->b_interlock); |
VOP_STRATEGY(vp, bp); |
VOP_STRATEGY(vp, bp); |
error = biowait(bp); |
error = biowait(bp); |
} |
} |
if (error) { |
if (error) { |
brelse(bp); |
brelse(bp, 0); |
*countp = 0; |
*countp = 0; |
return (error); |
return (error); |
} |
} |
Line 640 ffs_indirtrunc(struct inode *ip, daddr_t |
|
Line 643 ffs_indirtrunc(struct inode *ip, daddr_t |
|
if (copy != NULL) { |
if (copy != NULL) { |
FREE(copy, M_TEMP); |
FREE(copy, M_TEMP); |
} else { |
} else { |
bp->b_flags |= B_INVAL; |
brelse(bp, B_INVAL); |
brelse(bp); |
|
} |
} |
|
|
*countp = blocksreleased; |
*countp = blocksreleased; |