e2fsck: report ext2fs_open2() and ext2fs_check_desc() errors

Print the actual errors returned by ext2fs_open2() and
ext2fs_check_desc() before we fall back to the backup block group
descriptors so that it's easier to see if there is some obscure
failure that is causing e2fsck to think that it should use the backup
block group descriptors.

Addresses-Google-Bug: #6208183

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
bitmap-optimize
Theodore Ts'o 2012-03-21 23:40:24 -04:00
parent 349b8a37c5
commit 010c49cf49
15 changed files with 36 additions and 0 deletions

View File

@ -423,6 +423,16 @@ static struct e2fsck_problem problem_table[] = {
N_("@S has invalid MMP magic. "),
PROMPT_FIX, PR_PREEN_OK | PR_NO_OK},
/* Opening file system failed */
{ PR_0_OPEN_FAILED,
N_("ext2fs_open2: %m\n"),
PROMPT_NONE, 0 },
/* Checking group descriptor failed */
{ PR_0_CHECK_DESC_FAILED,
N_("ext2fs_check_desc: %m\n"),
PROMPT_NONE, 0 },
/* Pass 1 errors */
/* Pass 1: Checking inodes, blocks, and sizes */

View File

@ -243,6 +243,11 @@ struct problem_context {
/* Superblock has invalid MMP magic. */
#define PR_0_MMP_INVALID_MAGIC 0x000043
/* Opening file system failed */
#define PR_0_OPEN_FAILED 0x000044
/* Checking group descriptor failed */
#define PR_0_CHECK_DESC_FAILED 0x000045
/*
* Pass 1 errors

View File

@ -1232,6 +1232,15 @@ restart:
((retval == EXT2_ET_BAD_MAGIC) ||
(retval == EXT2_ET_CORRUPT_SUPERBLOCK) ||
((retval == 0) && (retval2 = ext2fs_check_desc(fs))))) {
if (retval) {
pctx.errcode = retval;
fix_problem(ctx, PR_0_OPEN_FAILED, &pctx);
}
if (retval2) {
pctx.errcode = retval2;
fix_problem(ctx, PR_0_CHECK_DESC_FAILED, &pctx);
}
pctx.errcode = 0;
if (retval2 == ENOMEM || retval2 == EXT2_ET_NO_MEMORY) {
retval = retval2;
goto failure;

View File

@ -1,3 +1,4 @@
ext2fs_open2: The ext2 superblock is corrupt
../e2fsck/e2fsck: Superblock invalid, trying backup blocks...
../e2fsck/e2fsck: The ext2 superblock is corrupt while trying to open test.img

View File

@ -1,3 +1,4 @@
ext2fs_check_desc: Corrupt group descriptor: bad block for block bitmap
Note: if several inode or block bitmap blocks or part
of the inode table require relocation, you may wish to try
running e2fsck with the '-b 8193' option first. The problem

View File

@ -1,3 +1,4 @@
ext2fs_check_desc: Corrupt group descriptor: bad block for inode bitmap
Note: if several inode or block bitmap blocks or part
of the inode table require relocation, you may wish to try
running e2fsck with the '-b 8193' option first. The problem

View File

@ -1,3 +1,4 @@
ext2fs_check_desc: Corrupt group descriptor: bad block for inode table
Note: if several inode or block bitmap blocks or part
of the inode table require relocation, you may wish to try
running e2fsck with the '-b 8193' option first. The problem

View File

@ -1,3 +1,4 @@
ext2fs_check_desc: Corrupt group descriptor: bad block for inode table
../e2fsck/e2fsck: Group descriptors look bad... trying backup blocks...
Inode table for group 1 is not in group. (block 0)
WARNING: SEVERE DATA LOSS POSSIBLE.

View File

@ -1,3 +1,4 @@
ext2fs_check_desc: Corrupt group descriptor: bad block for block bitmap
Pass 1: Checking inodes, blocks, and sizes
Relocating group 0's block bitmap to 2...
Pass 2: Checking directory structure

View File

@ -1,3 +1,4 @@
ext2fs_check_desc: Corrupt group descriptor: bad block for inode table
../e2fsck/e2fsck: Group descriptors look bad... trying backup blocks...
Inode table for group 1 is not in group. (block 0)
WARNING: SEVERE DATA LOSS POSSIBLE.

View File

@ -1,3 +1,4 @@
ext2fs_check_desc: Corrupt group descriptor: bad block for inode bitmap
Filesystem did not have a UUID; generating one.
Pass 1: Checking inodes, blocks, and sizes

View File

@ -113,6 +113,7 @@ Exit status is 0
debugfs -R ''set_super_value reserved_gdt_blocks 15679'' -w test.img
Exit status is 0
ext2fs_check_desc: Corrupt group descriptor: bad block for block bitmap
../e2fsck/e2fsck: Group descriptors look bad... trying backup blocks...
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure

View File

@ -1,3 +1,4 @@
ext2fs_check_desc: Corrupt group descriptor: bad block for block bitmap
../e2fsck/e2fsck: Group descriptors look bad... trying backup blocks...
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure

View File

@ -1,3 +1,4 @@
ext2fs_open2: The ext2 superblock is corrupt
../e2fsck/e2fsck: Superblock invalid, trying backup blocks...
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure

View File

@ -1,3 +1,4 @@
ext2fs_open2: Bad magic number in super-block
../e2fsck/e2fsck: Superblock invalid, trying backup blocks...
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure