[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <BAY179-W439AA99AF43810A0FC1C49FDCF0@phx.gbl>
Date: Wed, 10 Sep 2014 17:10:21 -0400
From: TR Reardon <thomas_reardon@...mail.com>
To: "Darrick J. Wong" <darrick.wong@...cle.com>
CC: "linux-ext4@...r.kernel.org" <linux-ext4@...r.kernel.org>
Subject: RE: tune2fs -O ^metadata_csum not checking bitmap failures
> Date: Wed, 10 Sep 2014 13:48:40 -0700
> From: darrick.wong@...cle.com
> To: thomas_reardon@...mail.com
> CC: linux-ext4@...r.kernel.org
> Subject: Re: tune2fs -O ^metadata_csum not checking bitmap failures
>
> On Wed, Sep 10, 2014 at 04:30:41PM -0400, TR Reardon wrote:
>> When running tune2fs -O ^metadata_csum, disable_uninit_bg() is called to
>> reset the gdt. However, return value is not checked, which allows a failure
>> (say, a block bitmap failure somewhere, among other errors) to continue
>> through to rewrite_metadata_checksums()
>>
>> This seems wrong; should not the rewrite occur only if
>> disable/enable_uninit_bg() succeeds?
>
> The rewrite will fail if either of the error cases in disable_uninit_bg() fail,
> since rewrite_metadata_checksums() also tries to load the bitmap and scan the
> inodes.
Actually, rewrite_metadata_checksums() loads the bitmap with checksums OFF, which in the test I just ran, will succeed. This leaves the fs in a weird half-checksummed state.
I should have been clearer above: if the initial disable_uninit_bg() failure occurs because of a *checksum error*, then we get into this confused state. Given that people would possibly try to disable metadata_csum if there are checksum errors, this seems like a fairly common scenario.
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists