Whamcloud - gitweb
Minor correction to e2fsck.conf man page
[tools/e2fsprogs.git] / e2fsck / super.c
index 2e7607c..ae40531 100644 (file)
@@ -220,7 +220,7 @@ static int release_inode_blocks(e2fsck_t ctx, ext2_ino_t ino,
                }
                if (retval) {
                        com_err("release_inode_blocks", retval,
-               _("while calling ext2fs_adjust_ea_refocunt for inode %d"),
+               _("while calling ext2fs_adjust_ea_refcount for inode %d"),
                                ino);
                        return 1;
                }
@@ -566,15 +566,15 @@ void check_super_block(e2fsck_t ctx)
         * Verify the group descriptors....
         */
        first_block =  sb->s_first_data_block;
-       last_block = first_block + blocks_per_group;
 
        for (i = 0, gd=fs->group_desc; i < fs->group_desc_count; i++, gd++) {
                pctx.group = i;
-               
-               if (i == fs->group_desc_count - 1)
-                       last_block = sb->s_blocks_count;
+
+               first_block = ext2fs_group_first_block(fs, i);
+               last_block = ext2fs_group_last_block(fs, i);
+
                if ((gd->bg_block_bitmap < first_block) ||
-                   (gd->bg_block_bitmap >= last_block)) {
+                   (gd->bg_block_bitmap > last_block)) {
                        pctx.blk = gd->bg_block_bitmap;
                        if (fix_problem(ctx, PR_0_BB_NOT_GROUP, &pctx))
                                gd->bg_block_bitmap = 0;
@@ -584,7 +584,7 @@ void check_super_block(e2fsck_t ctx)
                        ctx->invalid_bitmaps++;
                }
                if ((gd->bg_inode_bitmap < first_block) ||
-                   (gd->bg_inode_bitmap >= last_block)) {
+                   (gd->bg_inode_bitmap > last_block)) {
                        pctx.blk = gd->bg_inode_bitmap;
                        if (fix_problem(ctx, PR_0_IB_NOT_GROUP, &pctx))
                                gd->bg_inode_bitmap = 0;
@@ -595,7 +595,7 @@ void check_super_block(e2fsck_t ctx)
                }
                if ((gd->bg_inode_table < first_block) ||
                    ((gd->bg_inode_table +
-                     fs->inode_blocks_per_group - 1) >= last_block)) {
+                     fs->inode_blocks_per_group - 1) > last_block)) {
                        pctx.blk = gd->bg_inode_table;
                        if (fix_problem(ctx, PR_0_ITABLE_NOT_GROUP, &pctx))
                                gd->bg_inode_table = 0;
@@ -606,8 +606,6 @@ void check_super_block(e2fsck_t ctx)
                }
                free_blocks += gd->bg_free_blocks_count;
                free_inodes += gd->bg_free_inodes_count;
-               first_block += sb->s_blocks_per_group;
-               last_block += sb->s_blocks_per_group;
 
                if ((gd->bg_free_blocks_count > sb->s_blocks_per_group) ||
                    (gd->bg_free_inodes_count > sb->s_inodes_per_group) ||