Re: [PATCH] ext4: fix ext4_init_block_bitmap() for metablock block group

Andreas Dilger
2008-06-16T19:19:12Z

On Jun 16, 2008 23:10 +0900, Akinobu Mita wrote:
> Looks good to me. But I'd like to divide into the change into simple
> bugfix and cleanup patch in order to clarify the each change.
>
> Here is a bugfix only patch.
>
> From: Akinobu Mita <akinobu.mita@gmail.com>
> Subject: ext4: fix ext4_init_block_bitmap() for metablock block group
>
> When meta_bg feature is enabled and s_first_meta_bg != 0,
> ext4_init_block_bitmap() miscalculates the number of block used by
> the group descriptor table (0 or 1 for metablock block group)
>
> group_rel in the original code should be calculated by:
>
> group_rel = block_group % EXT4_DESC_PER_BLOCK(sb);
>
> No need to subtract s_first_meta_bg from brock_group.
> It will be equivalent what ext4_bg_num_gdb_meta() does
>
> Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Stephen Tweedie <sct@redhat.com>
> Cc: adilger@clusterfs.com
> Cc: Mingming Cao <cmm@us.ibm.com>
> Cc: Theodore Tso <tytso@MIT.EDU>

Acked-by: Andreas Dilger <adilger@sun.com>

> ---
> fs/ext4/balloc.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> Index: 2.6-git/fs/ext4/balloc.c
> ===================================================================
> --- 2.6-git.orig/fs/ext4/balloc.c
> +++ 2.6-git/fs/ext4/balloc.c
> @@ -121,9 +121,8 @@ unsigned ext4_init_block_bitmap(struct s
> le16_to_cpu(sbi->s_es->s_reserved_gdt_blocks);
> }
> } else { /* For META_BG_BLOCK_GROUPS */
> - int group_rel = (block_group -
> - le32_to_cpu(sbi->s_es->s_first_meta_bg)) %
> - EXT4_DESC_PER_BLOCK(sb);
> + int group_rel = block_group % EXT4_DESC_PER_BLOCK(sb);
> +
> if (group_rel == 0 || group_rel == 1 ||
> (group_rel == EXT4_DESC_PER_BLOCK(sb) - 1))
> bit_max += 1;

Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.