From owner-p4-projects@FreeBSD.ORG Thu May 27 11:26:21 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B32E91065777; Thu, 27 May 2010 11:26:21 +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 74C891065675 for ; Thu, 27 May 2010 11:26:21 +0000 (UTC) (envelope-from lz@FreeBSD.org) Received: from repoman.freebsd.org (unknown [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4865C8FC14 for ; Thu, 27 May 2010 11:26:21 +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 o4RBQLOe030681 for ; Thu, 27 May 2010 11:26:21 GMT (envelope-from lz@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id o4RBQLTG030679 for perforce@freebsd.org; Thu, 27 May 2010 11:26:21 GMT (envelope-from lz@FreeBSD.org) Date: Thu, 27 May 2010 11:26:21 GMT Message-Id: <201005271126.o4RBQLTG030679@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to lz@FreeBSD.org using -f From: Zheng Liu To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 178876 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 11:26:21 -0000 http://p4web.freebsd.org/@@178876?ac=10 Change 178876 by lz@gnehzuil-freebsd on 2010/05/27 11:25:58 Modify remove rsv lock graunlarity. Affected files ... .. //depot/projects/soc2010/extfs/src/sys/fs/ext2fs/ext2_alloc.c#18 edit Differences ... ==== //depot/projects/soc2010/extfs/src/sys/fs/ext2fs/ext2_alloc.c#18 (text+ko) ==== @@ -126,8 +126,7 @@ return; EXT2_TREE_LOCK(ip->i_e2fs); - if (rp != NULL && rp->rsv_end != EXT2_RSV_NOT_ALLOCATED) - ext2_remove_rsv_win(ip->i_e2fs, rp); + ext2_remove_rsv_win(ip->i_e2fs, rp); EXT2_TREE_UNLOCK(ip->i_e2fs); } @@ -295,7 +294,7 @@ bpref = ext2_mapsearch(fs, bbp, bpref); if (bpref < 0) return (0); - goto allocated1; + goto allocated; } EXT2_TREE_UNLOCK(fs); @@ -303,15 +302,16 @@ len = howmany(fs->e2fs->e2fs_fpg, NBBY) - start; loc = skpc(0xff, len, &bbp[start]); if (loc == 0) { - EXT2_TREE_LOCK(fs); - if (rp->rsv_end != EXT2_RSV_NOT_ALLOCATED) + if (rp->rsv_end != EXT2_RSV_NOT_ALLOCATED) { + EXT2_TREE_LOCK(fs); ext2_remove_rsv_win(fs, rp); - EXT2_TREE_UNLOCK(fs); + EXT2_TREE_UNLOCK(fs); + } bpref = ext2_mapsearch(fs, bbp, bpref); if (bpref < 0) return (0); - goto allocated1; + goto allocated; } i = start + len - loc; map = bbp[i]; @@ -322,8 +322,10 @@ start = cg * fs->e2fs->e2fs_fpg + fs->e2fs->e2fs_first_dblock + bpref; if (start >= rp->rsv_start && - start < rp->rsv_end) + start < rp->rsv_end) { + rp->rsv_alloc_hit++; goto allocated; + } bpref = start; search_rsv = rp; @@ -340,8 +342,6 @@ EXT2_TREE_UNLOCK(fs); allocated: - rp->rsv_alloc_hit++; -allocated1: setbit(bbp, (daddr_t)bpref); EXT2_LOCK(ump); fs->e2fs->e2fs_fbcount--; @@ -379,10 +379,11 @@ } find: - EXT2_TREE_LOCK(fs); - if (rp->rsv_end != EXT2_RSV_NOT_ALLOCATED); + if (rp->rsv_end != EXT2_RSV_NOT_ALLOCATED) { + EXT2_TREE_LOCK(fs); ext2_remove_rsv_win(fs, rp); - EXT2_TREE_UNLOCK(fs); + EXT2_TREE_UNLOCK(fs); + } bno = ext2_mapsearch(fs, bbp, bpref); if (bno < 0)