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.
Signed-off-by: Bourde Celine <celine.bourde@xxxxxxxx>
alloc_tables.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff -rpu a/lib/ext2fs/alloc_tables.c b/lib/ext2fs/alloc_tables.c
--- a/lib/ext2fs/alloc_tables.c 2008-07-01 16:11:49.000000000 +0200
+++ b/lib/ext2fs/alloc_tables.c 2008-07-02 16:38:22.000000000 +0200
@@ -71,9 +71,11 @@ static blk_t flexbg_offset(ext2_filsys f
&first_free))
return first_free;
- if (ext2fs_get_free_blocks(fs, first_free + offset, last_blk, size,
- bmap, &first_free))
- return first_free;
+ if (offset)
+ if (ext2fs_get_free_blocks(fs, first_free + offset - 1,
+ last_blk, size, bmap,
+ &first_free))
+ return first_free;
return first_free;
}