From: Theodore Ts'o Date: Mon, 6 Feb 2012 18:47:48 +0000 (-0500) Subject: e2fsck: allow the block bitmap to be uninit when the inode bitmap is in use X-Git-Tag: v1.42.1~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=40b9cc517351dbedff43ab4f4da59af4921b6d25;p=thirdparty%2Fe2fsprogs.git e2fsck: allow the block bitmap to be uninit when the inode bitmap is in use Removing this check will allow us to eventually eliminate code from the kernel which forcibly initialized the block bitmap when the inode bitmap is first used. This would eliminate a required journal credit and extra disk write. Addresses-Google-Bug: #5944440 Signed-off-by: "Theodore Ts'o" --- diff --git a/e2fsck/problem.c b/e2fsck/problem.c index f042b892b..579c838f6 100644 --- a/e2fsck/problem.c +++ b/e2fsck/problem.c @@ -362,11 +362,6 @@ static struct e2fsck_problem problem_table[] = { N_("@g descriptor %g marked uninitialized without feature set.\n"), PROMPT_FIX, PR_PREEN_OK }, - /* group N block bitmap uninitialized but inode bitmap in use. */ - { PR_0_BB_UNINIT_IB_INIT, - N_("@g %g @b @B uninitialized but @i @B in use.\n"), - PROMPT_FIX, PR_PREEN_OK }, - /* Group descriptor N has invalid unused inodes count. */ { PR_0_GDT_ITABLE_UNUSED, N_("@g descriptor %g has invalid unused inodes count %b. "), diff --git a/e2fsck/problem.h b/e2fsck/problem.h index 9db29d80d..3fabc9063 100644 --- a/e2fsck/problem.h +++ b/e2fsck/problem.h @@ -203,8 +203,8 @@ struct problem_context { /* Group descriptor N marked uninitialized without feature set. */ #define PR_0_GDT_UNINIT 0x000036 -/* Block bitmap is not initialised and Inode bitmap is */ -#define PR_0_BB_UNINIT_IB_INIT 0x000037 +/* Block bitmap is not initialised and Inode bitmap is -- NO LONGER USED */ +/* #define PR_0_BB_UNINIT_IB_INIT 0x000037 */ /* Group descriptor N has invalid unused inodes count. */ #define PR_0_GDT_ITABLE_UNUSED 0x000038 diff --git a/e2fsck/super.c b/e2fsck/super.c index afec4b433..3397d77ff 100644 --- a/e2fsck/super.c +++ b/e2fsck/super.c @@ -666,15 +666,6 @@ void check_super_block(e2fsck_t ctx) ext2fs_unmark_valid(fs); } - if (ext2fs_bg_flags_test(fs, i, EXT2_BG_BLOCK_UNINIT) && - !ext2fs_bg_flags_test(fs, i, EXT2_BG_INODE_UNINIT)) { - if (fix_problem(ctx, PR_0_BB_UNINIT_IB_INIT, &pctx)) { - ext2fs_bg_flags_clear(fs, i, EXT2_BG_BLOCK_UNINIT); - should_be = 1; - } - ext2fs_unmark_valid(fs); - } - if (csum_flag && (ext2fs_bg_itable_unused(fs, i) > ext2fs_bg_free_inodes_count(fs, i) || ext2fs_bg_itable_unused(fs, i) > sb->s_inodes_per_group)) {