Deleted Added
full compact
ext2_inode.c (42374) ext2_inode.c (43301)
1/*
2 * modified for 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

--- 83 unchanged lines hidden (view full) ---

92 ufs_itimes(vp);
93 ip = VTOI(vp);
94 if ((ip->i_flag & IN_MODIFIED) == 0)
95 return (0);
96 ip->i_flag &= ~(IN_LAZYMOD | IN_MODIFIED);
97 if (vp->v_mount->mnt_flag & MNT_RDONLY)
98 return (0);
99 fs = ip->i_e2fs;
1/*
2 * modified for 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

--- 83 unchanged lines hidden (view full) ---

92 ufs_itimes(vp);
93 ip = VTOI(vp);
94 if ((ip->i_flag & IN_MODIFIED) == 0)
95 return (0);
96 ip->i_flag &= ~(IN_LAZYMOD | IN_MODIFIED);
97 if (vp->v_mount->mnt_flag & MNT_RDONLY)
98 return (0);
99 fs = ip->i_e2fs;
100 if (error = bread(ip->i_devvp,
100 if ((error = bread(ip->i_devvp,
101 fsbtodb(fs, ino_to_fsba(fs, ip->i_number)),
101 fsbtodb(fs, ino_to_fsba(fs, ip->i_number)),
102 (int)fs->s_blocksize, NOCRED, &bp)) {
102 (int)fs->s_blocksize, NOCRED, &bp)) != 0) {
103 brelse(bp);
104 return (error);
105 }
106 ext2_di2ei( &ip->i_din, (struct ext2_inode *) ((char *)bp->b_data + EXT2_INODE_SIZE *
107 ino_to_fsbo(fs, ip->i_number)));
108/*
109 if (waitfor && (vp->v_mount->mnt_flag & MNT_ASYNC) == 0)
110 return (bwrite(bp));

--- 54 unchanged lines hidden (view full) ---

165 oip->i_flag |= IN_CHANGE | IN_UPDATE;
166 return (UFS_UPDATE(ovp, 1));
167 }
168 if (oip->i_size == length) {
169 oip->i_flag |= IN_CHANGE | IN_UPDATE;
170 return (UFS_UPDATE(ovp, 0));
171 }
172#if QUOTA
103 brelse(bp);
104 return (error);
105 }
106 ext2_di2ei( &ip->i_din, (struct ext2_inode *) ((char *)bp->b_data + EXT2_INODE_SIZE *
107 ino_to_fsbo(fs, ip->i_number)));
108/*
109 if (waitfor && (vp->v_mount->mnt_flag & MNT_ASYNC) == 0)
110 return (bwrite(bp));

--- 54 unchanged lines hidden (view full) ---

165 oip->i_flag |= IN_CHANGE | IN_UPDATE;
166 return (UFS_UPDATE(ovp, 1));
167 }
168 if (oip->i_size == length) {
169 oip->i_flag |= IN_CHANGE | IN_UPDATE;
170 return (UFS_UPDATE(ovp, 0));
171 }
172#if QUOTA
173 if (error = getinoquota(oip))
173 if ((error = getinoquota(oip)) != 0)
174 return (error);
175#endif
176 fs = oip->i_e2fs;
177 osize = oip->i_size;
178 ext2_discard_prealloc(oip);
179 /*
180 * Lengthen the size of the file. We must ensure that the
181 * last byte of the file is allocated. Since the smallest
182 * value of oszie is 0, length will be at least 1.
183 */
184 if (osize < length) {
185 offset = blkoff(fs, length - 1);
186 lbn = lblkno(fs, length - 1);
187 aflags = B_CLRBUF;
188 if (flags & IO_SYNC)
189 aflags |= B_SYNC;
190 vnode_pager_setsize(ovp, length);
174 return (error);
175#endif
176 fs = oip->i_e2fs;
177 osize = oip->i_size;
178 ext2_discard_prealloc(oip);
179 /*
180 * Lengthen the size of the file. We must ensure that the
181 * last byte of the file is allocated. Since the smallest
182 * value of oszie is 0, length will be at least 1.
183 */
184 if (osize < length) {
185 offset = blkoff(fs, length - 1);
186 lbn = lblkno(fs, length - 1);
187 aflags = B_CLRBUF;
188 if (flags & IO_SYNC)
189 aflags |= B_SYNC;
190 vnode_pager_setsize(ovp, length);
191 if (error = ext2_balloc(oip, lbn, offset + 1, cred, &bp,
192 aflags))
191 if ((error = ext2_balloc(oip, lbn, offset + 1, cred, &bp,
192 aflags)) != 0)
193 return (error);
194 oip->i_size = length;
195 if (aflags & IO_SYNC)
196 bwrite(bp);
197 else
198 bawrite(bp);
199 oip->i_flag |= IN_CHANGE | IN_UPDATE;
200 return (UFS_UPDATE(ovp, 1));

--- 9 unchanged lines hidden (view full) ---

210 offset = blkoff(fs, length);
211 if (offset == 0) {
212 oip->i_size = length;
213 } else {
214 lbn = lblkno(fs, length);
215 aflags = B_CLRBUF;
216 if (flags & IO_SYNC)
217 aflags |= B_SYNC;
193 return (error);
194 oip->i_size = length;
195 if (aflags & IO_SYNC)
196 bwrite(bp);
197 else
198 bawrite(bp);
199 oip->i_flag |= IN_CHANGE | IN_UPDATE;
200 return (UFS_UPDATE(ovp, 1));

--- 9 unchanged lines hidden (view full) ---

210 offset = blkoff(fs, length);
211 if (offset == 0) {
212 oip->i_size = length;
213 } else {
214 lbn = lblkno(fs, length);
215 aflags = B_CLRBUF;
216 if (flags & IO_SYNC)
217 aflags |= B_SYNC;
218 if (error = ext2_balloc(oip, lbn, offset, cred, &bp,
219 aflags))
218 if ((error = ext2_balloc(oip, lbn, offset, cred, &bp,
219 aflags)) != 0)
220 return (error);
221 oip->i_size = length;
222 size = blksize(fs, oip, lbn);
223 bzero((char *)bp->b_data + offset, (u_int)(size - offset));
224 allocbuf(bp, size);
225 if (aflags & IO_SYNC)
226 bwrite(bp);
227 else

--- 218 unchanged lines hidden (view full) ---

446 * Recursively free totally unused blocks.
447 */
448 for (i = NINDIR(fs) - 1, nlbn = lbn + 1 - i * factor; i > last;
449 i--, nlbn += factor) {
450 nb = bap[i];
451 if (nb == 0)
452 continue;
453 if (level > SINGLE) {
220 return (error);
221 oip->i_size = length;
222 size = blksize(fs, oip, lbn);
223 bzero((char *)bp->b_data + offset, (u_int)(size - offset));
224 allocbuf(bp, size);
225 if (aflags & IO_SYNC)
226 bwrite(bp);
227 else

--- 218 unchanged lines hidden (view full) ---

446 * Recursively free totally unused blocks.
447 */
448 for (i = NINDIR(fs) - 1, nlbn = lbn + 1 - i * factor; i > last;
449 i--, nlbn += factor) {
450 nb = bap[i];
451 if (nb == 0)
452 continue;
453 if (level > SINGLE) {
454 if (error = ext2_indirtrunc(ip, nlbn,
455 fsbtodb(fs, nb), (daddr_t)-1, level - 1, &blkcount))
454 if ((error = ext2_indirtrunc(ip, nlbn,
455 fsbtodb(fs, nb), (daddr_t)-1, level - 1, &blkcount)) != 0)
456 allerror = error;
457 blocksreleased += blkcount;
458 }
459 ext2_blkfree(ip, nb, fs->s_blocksize);
460 blocksreleased += nblocks;
461 }
462
463 /*
464 * Recursively free last partial block.
465 */
466 if (level > SINGLE && lastbn >= 0) {
467 last = lastbn % factor;
468 nb = bap[i];
469 if (nb != 0) {
456 allerror = error;
457 blocksreleased += blkcount;
458 }
459 ext2_blkfree(ip, nb, fs->s_blocksize);
460 blocksreleased += nblocks;
461 }
462
463 /*
464 * Recursively free last partial block.
465 */
466 if (level > SINGLE && lastbn >= 0) {
467 last = lastbn % factor;
468 nb = bap[i];
469 if (nb != 0) {
470 if (error = ext2_indirtrunc(ip, nlbn, fsbtodb(fs, nb),
471 last, level - 1, &blkcount))
470 if ((error = ext2_indirtrunc(ip, nlbn, fsbtodb(fs, nb),
471 last, level - 1, &blkcount)) != 0)
472 allerror = error;
473 blocksreleased += blkcount;
474 }
475 }
476 FREE(copy, M_TEMP);
477 *countp = blocksreleased;
478 return (allerror);
479}

--- 14 unchanged lines hidden ---
472 allerror = error;
473 blocksreleased += blkcount;
474 }
475 }
476 FREE(copy, M_TEMP);
477 *countp = blocksreleased;
478 return (allerror);
479}

--- 14 unchanged lines hidden ---