PERFORCE change 167803 for review
Aditya Sarawgi
truncs at FreeBSD.org
Tue Aug 25 19:46:12 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=167803
Change 167803 by truncs at aditya on 2009/08/25 19:45:12
Revert some of my previous changes.
Affected files ...
.. //depot/projects/soc2009/soc_ext2fs/src/sys/fs/ext2fs/ext2_inode.c#2 edit
Differences ...
==== //depot/projects/soc2009/soc_ext2fs/src/sys/fs/ext2fs/ext2_inode.c#2 (text+ko) ====
@@ -125,16 +125,16 @@
long count, nblocks, blocksreleased = 0;
int aflags, error, i, allerror;
off_t osize;
-
- /*
+/*
+printf("ext2_truncate called %d to %d\n", VTOI(ovp)->i_number, length);
+*/ /*
* negative file sizes will totally break the code below and
* are not meaningful anyways.
- * We should check the max file size here too.
*/
- oip = VTOI(ovp);
if (length < 0)
- return EINVAL;
+ return EFBIG;
+ oip = VTOI(ovp);
if (ovp->v_type == VLNK &&
oip->i_size < ovp->v_mount->mnt_maxsymlinklen) {
#ifdef DIAGNOSTIC
@@ -155,7 +155,7 @@
/*
* Lengthen the size of the file. We must ensure that the
* last byte of the file is allocated. Since the smallest
- * value of osize is 0, length will be at least 1.
+ * value of oszie is 0, length will be at least 1.
*/
if (osize < length) {
if (length > oip->i_e2fs->e2fs_maxfilesize)
@@ -165,13 +165,12 @@
aflags = B_CLRBUF;
if (flags & IO_SYNC)
aflags |= B_SYNC;
- error = ext2_balloc(oip, lbn, offset + 1, cred, &bp,
- aflags);
- if(error)
+ vnode_pager_setsize(ovp, length);
+ if ((error = ext2_balloc(oip, lbn, offset + 1, cred, &bp,
+ aflags)) != 0)
return (error);
oip->i_size = length;
- vnode_pager_setsize(ovp, length);
- if (aflags & B_SYNC)
+ if (aflags & IO_SYNC)
bwrite(bp);
else
bawrite(bp);
@@ -201,12 +200,11 @@
size = blksize(fs, oip, lbn);
bzero((char *)bp->b_data + offset, (u_int)(size - offset));
allocbuf(bp, size);
- if (aflags & B_SYNC)
+ if (aflags & IO_SYNC)
bwrite(bp);
else
bawrite(bp);
}
- vnode_pager_setsize(ovp, length);
/*
* Calculate index into inode's block list of
* last direct and indirect blocks (if any)
@@ -445,9 +443,8 @@
last = lastbn % factor;
nb = bap[i];
if (nb != 0) {
- error = ext2_indirtrunc(ip, nlbn, fsbtodb(fs, nb),
- last, level - 1, &blkcount);
- if (error)
+ if ((error = ext2_indirtrunc(ip, nlbn, fsbtodb(fs, nb),
+ last, level - 1, &blkcount)) != 0)
allerror = error;
blocksreleased += blkcount;
}
More information about the p4-projects
mailing list