Date: Thu, 27 May 2010 11:26:21 GMT From: Zheng Liu <lz@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 178876 for review Message-ID: <201005271126.o4RBQLTG030679@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
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)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201005271126.o4RBQLTG030679>