All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <djwong@us.ibm.com>
To: Andreas Dilger <adilger.kernel@dilger.ca>
Cc: Theodore Tso <tytso@mit.edu>,
	Sunil Mushran <sunil.mushran@oracle.com>,
	Amir Goldstein <amir73il@gmail.com>,
	Andi Kleen <andi@firstfloor.org>, Mingming Cao <cmm@us.ibm.com>,
	Joel Becker <jlbec@evilplan.org>,
	linux-ext4@vger.kernel.org, Coly Li <colyli@gmail.com>
Subject: Re: [PATCH 07/51] e2fsck: Verify and correct inode checksums
Date: Mon, 19 Dec 2011 12:12:21 -0800	[thread overview]
Message-ID: <20111219201221.GL8233@tux1.beaverton.ibm.com> (raw)
In-Reply-To: <701CAD1A-51A8-4F0F-8323-4B2091BF8F78@dilger.ca>

On Mon, Dec 19, 2011 at 11:28:24AM +0100, Andreas Dilger wrote:
> On 2011-12-14, at 2:14 AM, Darrick J. Wong wrote:
> > Detect mismatches of the inode and checksum, and prompt the user to fix the
> > situation.
> > 
> > @@ -739,6 +740,12 @@ void e2fsck_pass1(e2fsck_t ctx)
> > 		pctx.ino = ino;
> > 		pctx.inode = inode;
> > 		ctx->stashed_ino = ino;
> > +
> > +		/* Clear corrupt inode */
> > +		if (pctx.errcode == EXT2_ET_INODE_CSUM_INVALID &&
> > +		    fix_problem(ctx, PR_1_INODE_CSUM_INVALID, &pctx))
> > +			goto clear_inode;
> 
> If the user enters "n" here to clear the inode, does it make sense to
> also ask if they want the checksum be corrected?  If this is also "n"
> (as is the case with "e2fsck -n") then nothing is done, but in some
> cases it makes sense to allow the user to keep the inode rather than
> only having the option to erase it.

I was thinking something like this might work:

if (csum_invalid)
	ask and then jump to clear_inode;

...all other inode sanity checks go here...

if (csum_was_invalid)
	ask and correct inode checksum;

That way, if the inode manages to survive all the other sanity checks, the user
has the opportunity to save the inode.  If the inode contains junk, then the
user will probably clear the inode on account of the garbage.

Come to think of it, this is probably a good idea for everything else.  I
think?

> > diff --git a/e2fsck/problem.c b/e2fsck/problem.c
> > index f042b89..89dc72b 100644
> > --- a/e2fsck/problem.c
> > +++ b/e2fsck/problem.c
> > @@ -934,7 +934,12 @@ static struct e2fsck_problem problem_table[] = {
> > +	/* inode checksum does not match inode */
> > +	{ PR_1_INODE_CSUM_INVALID,
> > +	  N_("@i %i checksum does not match @i.  "),
> > +	  PROMPT_FIX, PR_PREEN_OK },
> 
> Also, "PROMPT_FIX" is misleading if the "fix" is to erase the inode.
> It should instead be "PROMPT_CLEAR_INODE".

Ok.

--D
> 
> Cheers, Andreas
> 
> 
> 
> 
> 


  parent reply	other threads:[~2011-12-19 20:17 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-14  1:13 [PATCH v2.2 00/51] e2fsprogs: Add metadata checksumming Darrick J. Wong
2011-12-14  1:13 ` [PATCH 01/51] libext2fs: Read and write full size inodes Darrick J. Wong
     [not found]   ` <15FBE485-FC42-46A4-A2BE-9931A3B933A5@dilger.ca>
2011-12-19 17:46     ` Darrick J. Wong
2011-12-14  1:13 ` [PATCH 02/51] libext2fs: Change ext4 on-disk layout to support metadata checksumming Darrick J. Wong
     [not found]   ` <BBB7550D-77E9-441D-8ECF-C5A5A3B839C8@dilger.ca>
2011-12-19 20:13     ` Darrick J. Wong
2011-12-14  1:13 ` [PATCH 03/51] debugfs: Optionally ignore bad checksums Darrick J. Wong
2011-12-14  1:13 ` [PATCH 04/51] libext2fs: Add inode checksum support Darrick J. Wong
     [not found]   ` <4CD3617E-A647-4CAF-9C35-DF24656CB440@dilger.ca>
2011-12-19 20:05     ` Darrick J. Wong
2011-12-14  1:13 ` [PATCH 05/51] debugfs: Dump inode checksum when appropriate Darrick J. Wong
2011-12-14  1:13 ` [PATCH 06/51] tune2fs: Add inode checksum support Darrick J. Wong
2011-12-14  1:14 ` [PATCH 07/51] e2fsck: Verify and correct inode checksums Darrick J. Wong
     [not found]   ` <701CAD1A-51A8-4F0F-8323-4B2091BF8F78@dilger.ca>
2011-12-19 20:12     ` Darrick J. Wong [this message]
2011-12-14  1:14 ` [PATCH 08/51] mke2fs: Allow metadata checksums to be turned on at mkfs time Darrick J. Wong
     [not found]   ` <76441870-91E6-402F-B1F7-F67C97D0B02B@dilger.ca>
2011-12-19 16:59     ` Darrick J. Wong
2011-12-14  1:14 ` [PATCH 09/51] libext2fs: Create the inode bitmap checksum Darrick J. Wong
     [not found]   ` <8D63B0B0-ED5C-426E-82FE-5122A84DFFEC@gmail.com>
2011-12-19 20:03     ` Darrick J. Wong
2011-12-14  1:14 ` [PATCH 10/51] tune2fs: Rewrite inode bitmap checksums Darrick J. Wong
2011-12-14  1:14 ` [PATCH 11/51] dumpe2fs: Display inode bitmap checksum Darrick J. Wong
2011-12-18 18:09   ` Andreas Dilger
2011-12-14  1:14 ` [PATCH 12/51] e2fsck: Verify " Darrick J. Wong
2011-12-14  1:14 ` [PATCH 13/51] libext2fs: Create the block " Darrick J. Wong
2011-12-14  1:14 ` [PATCH 14/51] dumpe2fs: Display " Darrick J. Wong
     [not found]   ` <32C86905-38C6-4897-8A98-26431DB73118@dilger.ca>
2011-12-19 19:50     ` Darrick J. Wong
2011-12-14  1:14 ` [PATCH 15/51] e2fsck: Verify " Darrick J. Wong
2011-12-14  1:15 ` [PATCH 16/51] e2fsck: Don't verify bitmap checksums Darrick J. Wong
2011-12-14  1:15 ` [PATCH 17/51] tune2fs: Rewrite block " Darrick J. Wong
2011-12-14  1:15 ` [PATCH 18/51] libext2fs: Verify and calculate extent tree block checksums Darrick J. Wong
2011-12-14  1:15 ` [PATCH 19/51] tune2fs: Enable extent tree checksums Darrick J. Wong
2011-12-14  1:15 ` [PATCH 20/51] e2fsck: Verify extent tree blocks and clear the bad ones Darrick J. Wong
2011-12-19  6:50   ` Andreas Dilger
2011-12-19 19:47     ` Darrick J. Wong
2011-12-14  1:15 ` [PATCH 21/51] debugfs: Print htree internal node checksums Darrick J. Wong
2011-12-14  1:15 ` [PATCH 22/51] libext2fs: Add dx_root/dx_node checksum calculation and verification helpers Darrick J. Wong
2011-12-14  1:15 ` [PATCH 23/51] e2fsck: Verify htree root/node checksums Darrick J. Wong
2011-12-19  6:57   ` Andreas Dilger
2011-12-19 19:46     ` Darrick J. Wong
2011-12-14  1:15 ` [PATCH 24/51] libext2fs: Introduce dir_entry_tail to provide checksums for directory leaf nodes Darrick J. Wong
2011-12-14  1:16 ` [PATCH 25/51] e2fsck: Check directory leaf block checksums Darrick J. Wong
2011-12-14  1:16 ` [PATCH 26/51] tune2fs: Rebuild and checksum directories when toggling metadata_csum or changing UUID Darrick J. Wong
2011-12-14  1:16 ` [PATCH 27/51] libext2fs: Verify and calculate extended attribute block checksums Darrick J. Wong
2011-12-14  1:16 ` [PATCH 28/51] e2fsck: Check " Darrick J. Wong
2011-12-14  1:16 ` [PATCH 29/51] tune2fs: Rewrite " Darrick J. Wong
2011-12-14  1:16 ` [PATCH 30/51] libext2fs: Calculate and verify superblock checksums Darrick J. Wong
2011-12-14  1:16 ` [PATCH 31/51] e2fsck: Handle superblock checksum errors gracefully Darrick J. Wong
2011-12-14  1:16 ` [PATCH 32/51] libext2fs: Use i_generation in inode-related metadata checksums Darrick J. Wong
2011-12-14  1:16 ` [PATCH 33/51] libext2fs: Record the checksum algorithm in use in the superblock Darrick J. Wong
2011-12-14  1:17 ` [PATCH 34/51] tune2fs: Store checksum algorithm type in superblock Darrick J. Wong
2011-12-14  1:17 ` [PATCH 35/51] mke2fs: Record the checksum algorithm in use in the superblock Darrick J. Wong
2011-12-14  1:17 ` [PATCH 36/51] libext2fs: Block group checksum should use metadata_csum algorithm (if feature flag set) Darrick J. Wong
2011-12-14  1:17 ` [PATCH 37/51] tune2fs: Rewrite block group checksums when changing bg_use_meta_csum feature Darrick J. Wong
2011-12-14  1:17 ` [PATCH 38/51] mke2fs: Warn if not enabling all the features that metadata_csum wants Darrick J. Wong
2011-12-14  1:17 ` [PATCH 39/51] libext2fs: Add checksum to MMP block Darrick J. Wong
2011-12-14  1:17 ` [PATCH 40/51] e2fsck: Verify and correct MMP checksum problems Darrick J. Wong
2011-12-14  1:17 ` [PATCH 41/51] tune2fs: Force MMP update when changing metadata_csum flag Darrick J. Wong
2011-12-14  1:17 ` [PATCH 42/51] libext2fs: Change on-disk journal layout to support metadata checksumming Darrick J. Wong
2011-12-14  1:18 ` [PATCH 43/51] libext2fs: Dump feature flags for jbd2 v2 checksums Darrick J. Wong
2011-12-14  1:18 ` [PATCH 44/51] e2fsck: Check journal superblock checksum prior to recovery Darrick J. Wong
2011-12-14  1:18 ` [PATCH 45/51] e2fsck: Check revoke block checksum during recovery Darrick J. Wong
2011-12-14  1:18 ` [PATCH 46/51] e2fsck: Check descriptor block checksum when recovering journal Darrick J. Wong
2011-12-14  1:18 ` [PATCH 47/51] e2fsck: Check commit block checksum during recovery Darrick J. Wong
2011-12-14  1:18 ` [PATCH 48/51] e2fsck: Verify data block checksums when recovering journal Darrick J. Wong
2011-12-14  1:18 ` [PATCH 49/51] libext2fs: Enable support for the metadata checksumming feature Darrick J. Wong
2011-12-14  1:18 ` [PATCH 50/51] libext2fs: Bring the CRC32c implementation up to date with the kernel implementation Darrick J. Wong
2011-12-14  1:18 ` [PATCH 51/51] e2fsck: Refactor crc32_be code Darrick J. Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20111219201221.GL8233@tux1.beaverton.ibm.com \
    --to=djwong@us.ibm.com \
    --cc=adilger.kernel@dilger.ca \
    --cc=amir73il@gmail.com \
    --cc=andi@firstfloor.org \
    --cc=cmm@us.ibm.com \
    --cc=colyli@gmail.com \
    --cc=jlbec@evilplan.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=sunil.mushran@oracle.com \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.