ext4: cleanup to use ext4_group_first_block_no()
This is a cleanup and simplification patch which takes some open-coded calculations to calculate the first block number of a group and converts them to use the (already defined) ext4_group_first_block_no() function. Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Cc: Andreas Dilger <adilger@sun.com>
This commit is contained in:
committed by
Theodore Ts'o
parent
9b1d0998d2
commit
5661bd6861
@@ -130,8 +130,7 @@ unsigned ext4_init_block_bitmap(struct super_block *sb, struct buffer_head *bh,
|
|||||||
* to make sure we calculate the right free blocks
|
* to make sure we calculate the right free blocks
|
||||||
*/
|
*/
|
||||||
group_blocks = ext4_blocks_count(sbi->s_es) -
|
group_blocks = ext4_blocks_count(sbi->s_es) -
|
||||||
le32_to_cpu(sbi->s_es->s_first_data_block) -
|
ext4_group_first_block_no(sb, ngroups - 1);
|
||||||
(EXT4_BLOCKS_PER_GROUP(sb) * (ngroups - 1));
|
|
||||||
} else {
|
} else {
|
||||||
group_blocks = EXT4_BLOCKS_PER_GROUP(sb);
|
group_blocks = EXT4_BLOCKS_PER_GROUP(sb);
|
||||||
}
|
}
|
||||||
|
@@ -195,8 +195,7 @@ static ext4_fsblk_t ext4_ext_find_goal(struct inode *inode,
|
|||||||
if (S_ISREG(inode->i_mode))
|
if (S_ISREG(inode->i_mode))
|
||||||
block_group++;
|
block_group++;
|
||||||
}
|
}
|
||||||
bg_start = (block_group * EXT4_BLOCKS_PER_GROUP(inode->i_sb)) +
|
bg_start = ext4_group_first_block_no(inode->i_sb, block_group);
|
||||||
le32_to_cpu(EXT4_SB(inode->i_sb)->s_es->s_first_data_block);
|
|
||||||
last_block = ext4_blocks_count(EXT4_SB(inode->i_sb)->s_es) - 1;
|
last_block = ext4_blocks_count(EXT4_SB(inode->i_sb)->s_es) - 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -441,10 +441,9 @@ static void mb_free_blocks_double(struct inode *inode, struct ext4_buddy *e4b,
|
|||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
if (!mb_test_bit(first + i, e4b->bd_info->bb_bitmap)) {
|
if (!mb_test_bit(first + i, e4b->bd_info->bb_bitmap)) {
|
||||||
ext4_fsblk_t blocknr;
|
ext4_fsblk_t blocknr;
|
||||||
blocknr = e4b->bd_group * EXT4_BLOCKS_PER_GROUP(sb);
|
|
||||||
|
blocknr = ext4_group_first_block_no(sb, e4b->bd_group);
|
||||||
blocknr += first + i;
|
blocknr += first + i;
|
||||||
blocknr +=
|
|
||||||
le32_to_cpu(EXT4_SB(sb)->s_es->s_first_data_block);
|
|
||||||
ext4_grp_locked_error(sb, e4b->bd_group,
|
ext4_grp_locked_error(sb, e4b->bd_group,
|
||||||
__func__, "double-free of inode"
|
__func__, "double-free of inode"
|
||||||
" %lu's block %llu(bit %u in group %u)",
|
" %lu's block %llu(bit %u in group %u)",
|
||||||
@@ -1255,10 +1254,9 @@ static void mb_free_blocks(struct inode *inode, struct ext4_buddy *e4b,
|
|||||||
|
|
||||||
if (!mb_test_bit(block, EXT4_MB_BITMAP(e4b))) {
|
if (!mb_test_bit(block, EXT4_MB_BITMAP(e4b))) {
|
||||||
ext4_fsblk_t blocknr;
|
ext4_fsblk_t blocknr;
|
||||||
blocknr = e4b->bd_group * EXT4_BLOCKS_PER_GROUP(sb);
|
|
||||||
|
blocknr = ext4_group_first_block_no(sb, e4b->bd_group);
|
||||||
blocknr += block;
|
blocknr += block;
|
||||||
blocknr +=
|
|
||||||
le32_to_cpu(EXT4_SB(sb)->s_es->s_first_data_block);
|
|
||||||
ext4_grp_locked_error(sb, e4b->bd_group,
|
ext4_grp_locked_error(sb, e4b->bd_group,
|
||||||
__func__, "double-free of inode"
|
__func__, "double-free of inode"
|
||||||
" %lu's block %llu(bit %u in group %u)",
|
" %lu's block %llu(bit %u in group %u)",
|
||||||
@@ -1631,7 +1629,6 @@ int ext4_mb_find_by_goal(struct ext4_allocation_context *ac,
|
|||||||
int max;
|
int max;
|
||||||
int err;
|
int err;
|
||||||
struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb);
|
struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb);
|
||||||
struct ext4_super_block *es = sbi->s_es;
|
|
||||||
struct ext4_free_extent ex;
|
struct ext4_free_extent ex;
|
||||||
|
|
||||||
if (!(ac->ac_flags & EXT4_MB_HINT_TRY_GOAL))
|
if (!(ac->ac_flags & EXT4_MB_HINT_TRY_GOAL))
|
||||||
@@ -1648,8 +1645,8 @@ int ext4_mb_find_by_goal(struct ext4_allocation_context *ac,
|
|||||||
if (max >= ac->ac_g_ex.fe_len && ac->ac_g_ex.fe_len == sbi->s_stripe) {
|
if (max >= ac->ac_g_ex.fe_len && ac->ac_g_ex.fe_len == sbi->s_stripe) {
|
||||||
ext4_fsblk_t start;
|
ext4_fsblk_t start;
|
||||||
|
|
||||||
start = (e4b->bd_group * EXT4_BLOCKS_PER_GROUP(ac->ac_sb)) +
|
start = ext4_group_first_block_no(ac->ac_sb, e4b->bd_group) +
|
||||||
ex.fe_start + le32_to_cpu(es->s_first_data_block);
|
ex.fe_start;
|
||||||
/* use do_div to get remainder (would be 64-bit modulo) */
|
/* use do_div to get remainder (would be 64-bit modulo) */
|
||||||
if (do_div(start, sbi->s_stripe) == 0) {
|
if (do_div(start, sbi->s_stripe) == 0) {
|
||||||
ac->ac_found++;
|
ac->ac_found++;
|
||||||
@@ -1803,8 +1800,8 @@ void ext4_mb_scan_aligned(struct ext4_allocation_context *ac,
|
|||||||
BUG_ON(sbi->s_stripe == 0);
|
BUG_ON(sbi->s_stripe == 0);
|
||||||
|
|
||||||
/* find first stripe-aligned block in group */
|
/* find first stripe-aligned block in group */
|
||||||
first_group_block = e4b->bd_group * EXT4_BLOCKS_PER_GROUP(sb)
|
first_group_block = ext4_group_first_block_no(sb, e4b->bd_group);
|
||||||
+ le32_to_cpu(sbi->s_es->s_first_data_block);
|
|
||||||
a = first_group_block + sbi->s_stripe - 1;
|
a = first_group_block + sbi->s_stripe - 1;
|
||||||
do_div(a, sbi->s_stripe);
|
do_div(a, sbi->s_stripe);
|
||||||
i = (a * sbi->s_stripe) - first_group_block;
|
i = (a * sbi->s_stripe) - first_group_block;
|
||||||
@@ -2560,12 +2557,9 @@ static void release_blocks_on_commit(journal_t *journal, transaction_t *txn)
|
|||||||
ext4_unlock_group(sb, entry->group);
|
ext4_unlock_group(sb, entry->group);
|
||||||
if (test_opt(sb, DISCARD)) {
|
if (test_opt(sb, DISCARD)) {
|
||||||
ext4_fsblk_t discard_block;
|
ext4_fsblk_t discard_block;
|
||||||
struct ext4_super_block *es = EXT4_SB(sb)->s_es;
|
|
||||||
|
|
||||||
discard_block = (ext4_fsblk_t)entry->group *
|
discard_block = entry->start_blk +
|
||||||
EXT4_BLOCKS_PER_GROUP(sb)
|
ext4_group_first_block_no(sb, entry->group);
|
||||||
+ entry->start_blk
|
|
||||||
+ le32_to_cpu(es->s_first_data_block);
|
|
||||||
trace_ext4_discard_blocks(sb,
|
trace_ext4_discard_blocks(sb,
|
||||||
(unsigned long long)discard_block,
|
(unsigned long long)discard_block,
|
||||||
entry->count);
|
entry->count);
|
||||||
@@ -3525,8 +3519,7 @@ ext4_mb_release_inode_pa(struct ext4_buddy *e4b, struct buffer_head *bitmap_bh,
|
|||||||
if (bit >= end)
|
if (bit >= end)
|
||||||
break;
|
break;
|
||||||
next = mb_find_next_bit(bitmap_bh->b_data, end, bit);
|
next = mb_find_next_bit(bitmap_bh->b_data, end, bit);
|
||||||
start = group * EXT4_BLOCKS_PER_GROUP(sb) + bit +
|
start = ext4_group_first_block_no(sb, group) + bit;
|
||||||
le32_to_cpu(sbi->s_es->s_first_data_block);
|
|
||||||
mb_debug(1, " free preallocated %u/%u in group %u\n",
|
mb_debug(1, " free preallocated %u/%u in group %u\n",
|
||||||
(unsigned) start, (unsigned) next - bit,
|
(unsigned) start, (unsigned) next - bit,
|
||||||
(unsigned) group);
|
(unsigned) group);
|
||||||
|
@@ -225,11 +225,6 @@ struct ext4_buddy {
|
|||||||
static inline ext4_fsblk_t ext4_grp_offs_to_block(struct super_block *sb,
|
static inline ext4_fsblk_t ext4_grp_offs_to_block(struct super_block *sb,
|
||||||
struct ext4_free_extent *fex)
|
struct ext4_free_extent *fex)
|
||||||
{
|
{
|
||||||
ext4_fsblk_t block;
|
return ext4_group_first_block_no(sb, fex->fe_group) + fex->fe_start;
|
||||||
|
|
||||||
block = (ext4_fsblk_t) fex->fe_group * EXT4_BLOCKS_PER_GROUP(sb)
|
|
||||||
+ fex->fe_start
|
|
||||||
+ le32_to_cpu(EXT4_SB(sb)->s_es->s_first_data_block);
|
|
||||||
return block;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user