On Mon, Jul 18, 2011 at 9:26 AM, Andreas Dilger <adilger@xxxxxxxxx> wrote: > On 2011-07-17, at 8:52 PM, Yongqiang Yang wrote: >> This patch adds a function - ext4_set_btis() which can set multi-bits >> each time, and lets setup_new_group_blocks() use ext4_set_bits(). >> >> >> +void ext4_set_bits(void *bm, int cur, int len) >> +{ >> + mb_set_bits(bm, cur, len); >> +} > > Why not just rename mb_set_bits() to ext4_set_bits()? That could be done > in one patch to avoid complexity. Wouldn't it be better if mb_set_bits() remains static for compiler optimizations inside mballoc.c? I would however, change the name of the extern function to ext4_mb_set_bits() to be compliant with the name space. If I am not mistaken, we were planning to use such a helper function for setting bits in exclude bitmap. > >> diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c >> index 4089642..c91653c 100644 >> --- a/fs/ext4/resize.c >> +++ b/fs/ext4/resize.c >> @@ -227,11 +227,6 @@ static int setup_new_group_blocks(struct super_block *sb, >> goto exit_journal; >> } >> >> - if (ext4_bg_has_super(sb, input->group)) { >> - ext4_debug("mark backup superblock %#04llx (+0)\n", start); >> - ext4_set_bit(0, bh->b_data); >> - } >> - >> /* Copy all of the GDT blocks into the backup in this group */ >> for (i = 0, bit = 1, block = start + 1; >> i < gdblocks; i++, block++, bit++) { >> @@ -260,7 +255,6 @@ static int setup_new_group_blocks(struct super_block *sb, >> brelse(gdb); >> goto exit_bh; >> } >> - ext4_set_bit(bit, bh->b_data); >> brelse(gdb); >> } >> >> @@ -271,8 +265,11 @@ static int setup_new_group_blocks(struct super_block *sb, >> GFP_NOFS); >> if (err) >> goto exit_bh; >> - for (i = 0, bit = gdblocks + 1; i < reserved_gdb; i++, bit++) >> - ext4_set_bit(bit, bh->b_data); >> + >> + if (ext4_bg_has_super(sb, input->group)) { >> + ext4_debug("mark backup group tables %#04llx (+0)\n", start); >> + ext4_set_bits(bh->b_data, 0, gdblocks + reserved_gdb + 1); >> + } >> >> ext4_debug("mark block bitmap %#04llx (+%llu)\n", input->block_bitmap, >> input->block_bitmap - start); >> @@ -288,9 +285,8 @@ static int setup_new_group_blocks(struct super_block *sb, >> err = sb_issue_zeroout(sb, block, sbi->s_itb_per_group, GFP_NOFS); >> if (err) >> goto exit_bh; >> - for (i = 0, bit = input->inode_table - start; >> - i < sbi->s_itb_per_group; i++, bit++) >> - ext4_set_bit(bit, bh->b_data); >> + ext4_set_bits(bh->b_data, input->inode_table - start, >> + sbi->s_itb_per_group); >> >> if ((err = extend_or_restart_transaction(handle, 2, bh))) >> goto exit_bh; >> -- >> 1.7.5.1 >> > > > Cheers, Andreas > > > > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html