From owner-p4-projects@FreeBSD.ORG Thu Sep 3 17:34:38 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 68EC91065676; Thu, 3 Sep 2009 17:34:38 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 14E4C106566C for ; Thu, 3 Sep 2009 17:34:38 +0000 (UTC) (envelope-from truncs@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 027AC8FC08 for ; Thu, 3 Sep 2009 17:34:38 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n83HYbdf006380 for ; Thu, 3 Sep 2009 17:34:37 GMT (envelope-from truncs@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n83HYbMX006378 for perforce@freebsd.org; Thu, 3 Sep 2009 17:34:37 GMT (envelope-from truncs@FreeBSD.org) Date: Thu, 3 Sep 2009 17:34:37 GMT Message-Id: <200909031734.n83HYbMX006378@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to truncs@FreeBSD.org using -f From: Aditya Sarawgi To: Perforce Change Reviews Cc: Subject: PERFORCE change 168120 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Sep 2009 17:34:38 -0000 http://perforce.freebsd.org/chv.cgi?CH=168120 Change 168120 by truncs@aditya on 2009/09/03 17:33:57 Build fixes. Affected files ... .. //depot/projects/soc2009/soc_ext2fs/src/sys/fs/ext2fs/ext2_balloc.c#5 edit .. //depot/projects/soc2009/soc_ext2fs/src/sys/fs/ext2fs/ext2_inode.c#7 edit Differences ... ==== //depot/projects/soc2009/soc_ext2fs/src/sys/fs/ext2fs/ext2_balloc.c#5 (text+ko) ==== @@ -57,7 +57,7 @@ int ext2_balloc(ip, lbn, size, cred, bpp, flags) struct inode *ip; - int32_t bn; + int32_t lbn; int size; struct ucred *cred; struct buf **bpp; @@ -68,7 +68,7 @@ struct buf *bp, *nbp; struct vnode *vp = ITOV(ip); struct indir indirs[NIADDR + 2]; - int32_t newb, lbn, *bap, pref; + int32_t newb, *bap, pref; int osize, nsize, num, i, error; *bpp = NULL; @@ -129,12 +129,12 @@ */ } } else { - if (ip->i_size < (bn + 1) * fs->e2fs_bsize) + if (ip->i_size < (lbn + 1) * fs->e2fs_bsize) nsize = fragroundup(fs, size); else nsize = fs->e2fs_bsize; error = ext2_alloc(ip, lbn, - ext2_blkpref(ip, bn, (int)lbn, &ip->i_db[0], 0), + ext2_blkpref(ip, lbn, (int)lbn, &ip->i_db[0], 0), nsize, cred, &newb); if (error) return (error); @@ -181,8 +181,8 @@ pref = ext2_blkpref(ip, lbn, indirs[0].in_off + EXT2_NDIR_BLOCKS, &ip->i_db[0], 0); #endif - if (error = ext2_alloc(ip, lbn, pref, (int)fs->e2fs_bsize, - cred, &newb) + if ((error = ext2_alloc(ip, lbn, pref, + (int)fs->e2fs_bsize, cred, &newb))) return (error); nb = newb; bp = getblk(vp, indirs[1].in_lbn, fs->e2fs_bsize, 0, 0, 0); ==== //depot/projects/soc2009/soc_ext2fs/src/sys/fs/ext2fs/ext2_inode.c#7 (text+ko) ==== @@ -155,20 +155,24 @@ if (osize < length) { if (length > oip->i_e2fs->e2fs_maxfilesize) return (EFBIG); + vnode_pager_setsize(ovp, length); offset = blkoff(fs, length - 1); lbn = lblkno(fs, length - 1); aflags = B_CLRBUF; if (flags & IO_SYNC) aflags |= B_SYNC; - vnode_pager_setsize(ovp, length); error = ext2_balloc(oip, lbn, offset + 1, cred, &bp, aflags); if (error) { vnode_pager_setsize(vp, osize); return (error); } oip->i_size = length; + if (bp->b_bufsize == fs->e2fs_bsize) + bp->b_flags |= B_CLUSTEROK; if (aflags & B_SYNC) bwrite(bp); + else if (ovp->v_mount->mnt_flag & MNT_ASYNC) + bdwrite(bp); else bawrite(bp); oip->i_flag |= IN_CHANGE | IN_UPDATE; @@ -191,15 +195,18 @@ if (flags & IO_SYNC) aflags |= B_SYNC; error = ext2_balloc(oip, lbn, offset, cred, &bp, aflags); - if (error) { + if (error) return (error); - } oip->i_size = length; size = blksize(fs, oip, lbn); bzero((char *)bp->b_data + offset, (u_int)(size - offset)); allocbuf(bp, size); + if (bp->b_bufsize == fs->e2fs_bsize) + bp->b_flags |= B_CLUSTEROK; if (aflags & B_SYNC) bwrite(bp); + else if (ovp->v_mount->mnt_flag & MNT_ASYNC) + bdwrite(bp); else bawrite(bp); } @@ -243,7 +250,8 @@ error = vtruncbuf(ovp, cred, td, length, (int)fs->e2fs_bsize); if (error && (allerror == 0)) allerror = error; - + vnode_pager_setsize(ovp, length); + /* * Indirect blocks first. */