Updated ext4 patch queue with your updated uninit blk group and mballoc
patch.

Mingming

On Thu, 2007-10-04 at 00:34 +0530, Aneesh Kumar K.V wrote:
> 
> Aneesh Kumar K.V wrote:
> > 
> > 
> > Andreas Dilger wrote:
> >> On Oct 03, 2007  15:30 +0530, Aneesh Kumar K.V wrote:
> >>> +    if (block_group == sbi->s_gdb_count - 1) {
> >>> +        /*
> >>> +         * Even though mke2fs always initialize first and last group
> >>> +         * if some other tool enabled the EXT4_BG_BLOCK_UNINIT we need
> >>> +         * to make sure we calculate the right free blocks
> >>> +         */
> >>> +        free_blocks = ext4_blocks_count(sbi->s_es) -
> >>> +                le32_to_cpu(sbi->s_es->s_first_data_block) -
> >>> +                (EXT4_BLOCKS_PER_GROUP(sb) * sbi->s_groups_count) -
> >>> +                bit_max;
> >>
> >> Did you verify that subtracting s_first_data_block is indeed the right
> >> thing to do.  I _think_ yes, but I didn't look at it very closely when
> >> I wrote it late last night.
> >>
> > 
> > yes s_first_data_block is always decremented to find total number of 
> > blocks occupied by the reset of the group. But now looking at it again i 
> > guess i need to have
> 
> 
> 
> 
> diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c
> index 8613914..34b1e11 100644
> --- a/fs/ext4/balloc.c
> +++ b/fs/ext4/balloc.c
> @@ -50,7 +50,7 @@ unsigned ext4_init_block_bitmap(struct super_block *sb, 
> struct buffer_head *bh,
>  {
>       unsigned long start;
>       int bit, bit_max;
> -     unsigned free_blocks;
> +     unsigned free_blocks, group_blocks;
>       struct ext4_sb_info *sbi = EXT4_SB(sb);
> 
>       if (bh) {
> @@ -96,14 +96,15 @@ unsigned ext4_init_block_bitmap(struct super_block *sb, 
> struct buffer_head *bh,
>                * if some other tool enabled the EXT4_BG_BLOCK_UNINIT we need
>                * to make sure we calculate the right free blocks
>                */
> -             free_blocks = ext4_blocks_count(sbi->s_es) -
> -                             le32_to_cpu(sbi->s_es->s_first_data_block) -
> -                             (EXT4_BLOCKS_PER_GROUP(sb) * 
> sbi->s_groups_count) -
> -                             bit_max;
> +             group_blocks = ext4_blocks_count(sbi->s_es) -
> +                     le32_to_cpu(sbi->s_es->s_first_data_block) -
> +                     (EXT4_BLOCKS_PER_GROUP(sb) * (sbi->s_groups_count -1));
>       } else {
> -             free_blocks = EXT4_BLOCKS_PER_GROUP(sb) - bit_max;
> +             group_blocks = EXT4_BLOCKS_PER_GROUP(sb);
>       }
> 
> +     free_blocks = group_blocks - bit_max;
> +
>       if (bh) {
>               for (bit = 0; bit < bit_max; bit++)
>                       ext4_set_bit(bit, bh->b_data);
> @@ -123,8 +124,7 @@ unsigned ext4_init_block_bitmap(struct super_block *sb, 
> struct buffer_head *bh,
>                * blocksize * 8 ( which is the size of bitmap ), set rest of 
> the
>                * block bitmap to 1
>                */
> -             mark_bitmap_end(EXT4_BLOCKS_PER_GROUP(sb),
> -                                     sb->s_blocksize * 8, bh->b_data);
> +             mark_bitmap_end(group_blocks, sb->s_blocksize * 8, bh->b_data);
>       }
> 
>       return free_blocks - sbi->s_itb_per_group - 2;

-
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to