Loading fs/gfs2/bmap.c +9 −14 Original line number Diff line number Diff line Loading @@ -246,15 +246,11 @@ static void find_metapath(const struct gfs2_sbd *sdp, u64 block, } static inline unsigned int zero_metapath_length(const struct metapath *mp, unsigned height) static inline unsigned int metapath_branch_start(const struct metapath *mp) { unsigned int i; for (i = 0; i < height - 1; i++) { if (mp->mp_list[i] != 0) return i; } return height; if (mp->mp_list[0] == 0) return 2; return 1; } /** Loading Loading @@ -436,7 +432,7 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock, struct gfs2_sbd *sdp = GFS2_SB(inode); struct buffer_head *dibh = mp->mp_bh[0]; u64 bn, dblock = 0; unsigned n, i, blks, alloced = 0, iblks = 0, zmpl = 0; unsigned n, i, blks, alloced = 0, iblks = 0, branch_start = 0; unsigned dblks = 0; unsigned ptrs_per_blk; const unsigned end_of_metadata = height - 1; Loading Loading @@ -471,9 +467,8 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock, /* Building up tree height */ state = ALLOC_GROW_HEIGHT; iblks = height - ip->i_height; zmpl = zero_metapath_length(mp, height); iblks -= zmpl; iblks += height; branch_start = metapath_branch_start(mp); iblks += (height - branch_start); } } Loading Loading @@ -509,13 +504,13 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock, sizeof(struct gfs2_meta_header)); *ptr = zero_bn; state = ALLOC_GROW_DEPTH; for(i = zmpl; i < height; i++) { for(i = branch_start; i < height; i++) { if (mp->mp_bh[i] == NULL) break; brelse(mp->mp_bh[i]); mp->mp_bh[i] = NULL; } i = zmpl; i = branch_start; } if (n == 0) break; Loading fs/gfs2/rgrp.c +1 −1 Original line number Diff line number Diff line Loading @@ -195,7 +195,7 @@ static u32 gfs2_bitfit(const u8 *buffer, unsigned int buflen, u32 goal, depending on architecture. I've experimented with several ways of writing this section such as using an else before the goto but this one seems to be the fastest. */ while ((unsigned char *)plong < end - 1) { while ((unsigned char *)plong < end - sizeof(unsigned long)) { prefetch(plong + 1); if (((*plong) & LBITMASK) != lskipval) break; Loading Loading
fs/gfs2/bmap.c +9 −14 Original line number Diff line number Diff line Loading @@ -246,15 +246,11 @@ static void find_metapath(const struct gfs2_sbd *sdp, u64 block, } static inline unsigned int zero_metapath_length(const struct metapath *mp, unsigned height) static inline unsigned int metapath_branch_start(const struct metapath *mp) { unsigned int i; for (i = 0; i < height - 1; i++) { if (mp->mp_list[i] != 0) return i; } return height; if (mp->mp_list[0] == 0) return 2; return 1; } /** Loading Loading @@ -436,7 +432,7 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock, struct gfs2_sbd *sdp = GFS2_SB(inode); struct buffer_head *dibh = mp->mp_bh[0]; u64 bn, dblock = 0; unsigned n, i, blks, alloced = 0, iblks = 0, zmpl = 0; unsigned n, i, blks, alloced = 0, iblks = 0, branch_start = 0; unsigned dblks = 0; unsigned ptrs_per_blk; const unsigned end_of_metadata = height - 1; Loading Loading @@ -471,9 +467,8 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock, /* Building up tree height */ state = ALLOC_GROW_HEIGHT; iblks = height - ip->i_height; zmpl = zero_metapath_length(mp, height); iblks -= zmpl; iblks += height; branch_start = metapath_branch_start(mp); iblks += (height - branch_start); } } Loading Loading @@ -509,13 +504,13 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock, sizeof(struct gfs2_meta_header)); *ptr = zero_bn; state = ALLOC_GROW_DEPTH; for(i = zmpl; i < height; i++) { for(i = branch_start; i < height; i++) { if (mp->mp_bh[i] == NULL) break; brelse(mp->mp_bh[i]); mp->mp_bh[i] = NULL; } i = zmpl; i = branch_start; } if (n == 0) break; Loading
fs/gfs2/rgrp.c +1 −1 Original line number Diff line number Diff line Loading @@ -195,7 +195,7 @@ static u32 gfs2_bitfit(const u8 *buffer, unsigned int buflen, u32 goal, depending on architecture. I've experimented with several ways of writing this section such as using an else before the goto but this one seems to be the fastest. */ while ((unsigned char *)plong < end - 1) { while ((unsigned char *)plong < end - sizeof(unsigned long)) { prefetch(plong + 1); if (((*plong) & LBITMASK) != lskipval) break; Loading