diff options
author | robi <robi> | 2010-06-22 19:30:16 +0000 |
---|---|---|
committer | robi <robi> | 2010-06-22 19:30:16 +0000 |
commit | 5246c045f10cf7b1c8765d9c6a914c7a197e27e0 (patch) | |
tree | f1353a2510fc860dbeea657575cc8da36946f2c0 /src/journal.c | |
parent | 355b5d2442d61e8dc849aeff08b9f9c8c2bd6786 (diff) |
last group small inodetable
Diffstat (limited to 'src/journal.c')
-rw-r--r-- | src/journal.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/journal.c b/src/journal.c index 07ea4e3..89896b1 100644 --- a/src/journal.c +++ b/src/journal.c @@ -325,15 +325,23 @@ static int bock_is_inodetable(blk64_t block){ int group; struct ext2_group_desc *gdp; blk64_t last; + + last = current_fs->super->s_inodes_count / (current_fs->blocksize / current_fs->super->s_inode_size ) ; + last -= ((current_fs->group_desc_count - 1) * current_fs->inode_blocks_per_group ); + //FIXME for struct ext4_group_desc 48/64BIT for (group = 0; group < current_fs->group_desc_count; group++){ gdp = ¤t_fs->group_desc[group]; if (block >= (gdp->bg_inode_table + current_fs->inode_blocks_per_group)) continue; - if (block >= gdp->bg_inode_table) + if (block >= gdp->bg_inode_table){ + if ( group == (current_fs->group_desc_count - 1 )){ + if (block >= gdp->bg_inode_table + last) + break; + } return 1; + } else -//FIXME: if the last group has a small inodetable break; } return 0; |