diff mbox

Patch on algorithm of place allocation for inode tables in mke2fs

Message ID 41BA663C8B2F72499F48B0EF991C188E04770A2EB3@RU-EXSTRCL1.ru.corp.acronis.com
State Superseded, archived
Headers show

Commit Message

Vyacheslav Dubeyko Oct. 19, 2009, 7:12 a.m. UTC
Hello all,

I correct the patch:

[root@localhost ext2fs]# git diff alloc_tables.c
diff mbox

Patch

diff --git a/lib/ext2fs/alloc_tables.c b/lib/ext2fs/alloc_tables.c
index 8547ad6..8ef4b05 100644
--- a/lib/ext2fs/alloc_tables.c
+++ b/lib/ext2fs/alloc_tables.c
@@ -84,7 +84,7 @@  errcode_t ext2fs_allocate_group_table(ext2_filsys fs, dgrp_t group,
        errcode_t       retval;
        blk_t           group_blk, start_blk, last_blk, new_blk, blk;
        dgrp_t          last_grp = 0;
-       int             j, rem_grps = 0, flexbg_size = 0;
+       int             j, rem_grps = 0, flexbg_size = 0, inode_table_size = 0;

        group_blk = ext2fs_group_first_block(fs, group);
        last_blk = ext2fs_group_last_block(fs, group);
@@ -181,10 +181,14 @@  errcode_t ext2fs_allocate_group_table(ext2_filsys fs, dgrp_t group,
                blk_t prev_block = 0;
                if (group && fs->group_desc[group-1].bg_inode_table)
                        prev_block = fs->group_desc[group-1].bg_inode_table;
+               if ((group+1) == fs->group_desc_count &&
+                               (fs->group_desc_count % flexbg_size) == 1)
+                       inode_table_size = fs->inode_blocks_per_group;
+               else
+                       inode_table_size = fs->inode_blocks_per_group * rem_grps;
                group_blk = flexbg_offset(fs, group, prev_block, bmap,
                                                 flexbg_size * 2,
-                                                fs->inode_blocks_per_group *
-                                                rem_grps,
+                                                inode_table_size,
                                                 fs->inode_blocks_per_group);
                last_blk = ext2fs_group_last_block(fs, last_grp);
        }