mirror of
https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
synced 2025-01-25 01:43:25 +08:00
e2fsck: fix file systems with an overly large s_first_meta_bg
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
parent
f66e6ce444
commit
7a4352dccd
@ -440,6 +440,11 @@ static struct e2fsck_problem problem_table[] = {
|
||||
N_("@S 64bit filesystems needs extents to access the whole disk. "),
|
||||
PROMPT_FIX, PR_PREEN_OK | PR_NO_OK},
|
||||
|
||||
/* The first_meta_bg is too big */
|
||||
{ PR_0_FIRST_META_BG_TOO_BIG,
|
||||
N_("First_meta_bg is too big. (%N, max value %g). "),
|
||||
PROMPT_CLEAR, 0 },
|
||||
|
||||
/* Pass 1 errors */
|
||||
|
||||
/* Pass 1: Checking inodes, blocks, and sizes */
|
||||
|
@ -252,6 +252,9 @@ struct problem_context {
|
||||
/* 64bit is set but extents are not set. */
|
||||
#define PR_0_64BIT_WITHOUT_EXTENTS 0x000048
|
||||
|
||||
/* The first_meta_bg is too big */
|
||||
#define PR_0_FIRST_META_BG_TOO_BIG 0x000049
|
||||
|
||||
/*
|
||||
* Pass 1 errors
|
||||
*/
|
||||
|
@ -591,6 +591,18 @@ void check_super_block(e2fsck_t ctx)
|
||||
ext2fs_mark_super_dirty(fs);
|
||||
}
|
||||
|
||||
if ((fs->super->s_feature_incompat & EXT2_FEATURE_INCOMPAT_META_BG) &&
|
||||
(fs->super->s_first_meta_bg > fs->desc_blocks)) {
|
||||
pctx.group = fs->desc_blocks;
|
||||
pctx.num = fs->super->s_first_meta_bg;
|
||||
if (fix_problem(ctx, PR_0_FIRST_META_BG_TOO_BIG, &pctx)) {
|
||||
fs->super->s_feature_incompat &=
|
||||
~EXT2_FEATURE_INCOMPAT_META_BG;
|
||||
fs->super->s_first_meta_bg = 0;
|
||||
ext2fs_mark_super_dirty(fs);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Verify the group descriptors....
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user