- fs = u.u_pdir->i_fs;
- lbn = lblkno(fs, u.u_offset);
- base = blkoff(fs, u.u_offset);
- bn = fsbtodb(fs, bmap(u.u_pdir, lbn, B_WRITE, base + u.u_count));
- if (u.u_offset + u.u_count > u.u_pdir->i_size)
-/*ZZ*/{if((u.u_offset+u.u_count-1&~0x1ff)!=(u.u_pdir->i_size-1&~0x1ff))
-/*ZZ*/ printf("wdir i_size dir %s/%d (of=%d,cnt=%d,psz=%d))\n",
-/*ZZ*/ u.u_pdir->i_fs->fs_fsmnt,u.u_pdir->i_number,u.u_offset,
-/*ZZ*/ u.u_count,u.u_pdir->i_size);
- u.u_pdir->i_size = u.u_offset + u.u_count;
-/*ZZ*/}
- bp = bread(u.u_pdir->i_dev, bn, blksize(fs, u.u_pdir, lbn));
- if (bp->b_flags & B_ERROR) {
+ copy = geteblk((int)fs->fs_bsize);
+ bp = bread(ip->i_dev, fsbtodb(fs, bn), (int)fs->fs_bsize);
+ if (bp->b_flags&B_ERROR) {
+ brelse(copy);