Re: [PATCH][e2fsprogs][mke2fs] fix FLEX_BG offset

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 3 Jul 2008 06:55:53 -0500
"Jose R. Santos" <jrs@xxxxxxxxxx> wrote:

> On Thu, 03 Jul 2008 10:21:02 +0200
> Celine Bourde <celine.bourde@xxxxxxxx> wrote:
> 
> > This patch resolves the offset problem of the flex_bg
> > option when you use mke2fs tool.
> > 
> > For example, if you type mkfs.ext4 -I256 -O flex_bg -G32 -E test_fs <device>
> > and look dumpe2fs <device> result you will see an offset problem.
> > 
> > Group 0: (Blocks 0-32767)
> > Primary superblock at 0, Group descriptors at 1-5
> > Reserved GDT blocks at 6-1024
> > Block bitmap at 1025 (+1025), Inode bitmap at 1058 (+1058)
> > Inode table at 1090-1601 (+1090)
> > 0 free blocks, 8181 free inodes, 2 directories
> > Free blocks:
> > Free inodes: 12-8192
> > 
> > Inode bitmap must start at 1025 + 32 = 1057
> > In all flexbg groups, the block between the last block bitmap and the 
> > first inode
> > bitmap (metatdata) is not used, which introduced a hole.
> > 
> > This patch corrects it.
> > You have to apply it on e2fsprogs (mke2fs 1.41-WIP (17-Jun-2008)) master 
> > branch.
> > 
> > Celine Bourde.
> 
> Acked-by: Jose R. Santos <jrs@xxxxxxxxxx>

Looks like I jumped the gun to fast acknowledging this patch.  The
current patch doesn't run the second ext2fs_get_free_blocks() when
doing a search for block bitmap space.

Here is an updated patch.

commit a58058e85240c7834cd863efa35b21688e104047
Author: Jose R. Santos <jrs@xxxxxxxxxx>
Date:   Mon Jul 7 14:36:08 2008 -0500

    Fix FLEX_BG offset
    
    The offset for both inode bitmaps and inode tables is overshot by one
    block causing a hole between the group of bitmaps and inode tables.

    Signed-off-by: Jose R. Santos <jrs@xxxxxxxxxx>

diff --git a/lib/ext2fs/alloc_tables.c b/lib/ext2fs/alloc_tables.c
index d87585b..7f6ac77 100644
--- a/lib/ext2fs/alloc_tables.c
+++ b/lib/ext2fs/alloc_tables.c
@@ -46,6 +46,8 @@ static blk_t flexbg_offset(ext2_filsys fs, dgrp_t group, blk_t start_blk,
 	if (size > fs->super->s_blocks_per_group / 8)
 		size = fs->super->s_blocks_per_group / 8;
 
+	if (offset)
+		offset -= 1;
 	/*
 	 * Dont do a long search if the previous block
 	 * search is still valid.




-JRS
--
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

[Index of Archives]     [Reiser Filesystem Development]     [Ceph FS]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite National Park]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Media]

  Powered by Linux