From: Ted Ts'o <tytso@mit.edu>
To: Andreas Dilger <adilger@dilger.ca>
Cc: "Darrick J. Wong" <djwong@us.ibm.com>, linux-ext4@vger.kernel.org
Subject: Re: Collapsing the number of feature flags (was Re: [PATCH v2.3 00/23] ext4: Add metadata checksumming)
Date: Fri, 10 Feb 2012 16:11:31 -0500 [thread overview]
Message-ID: <20120210211131.GB5381@thunk.org> (raw)
In-Reply-To: <3EBD659A-0A10-4DAE-9EA9-E736CE187574@dilger.ca>
On Fri, Feb 10, 2012 at 12:11:10PM -0700, Andreas Dilger wrote:
> > In fact, if we wanted to take this to extremes, we could call it
> > EXT4_FEATURE_INCOMPAT_NEW_METADATA, and then let it imply the
> > following feature flags as well:
> >
> > EXT4_FEATURE_RO_COMPAT_SPARSE_SUPER
> > EXT4_FEATURE_RO_COMPAT_LARGE_FILE
> > EXT4_FEATURE_RO_COMPAT_HUGE_FILE
> > EXT4_FEATURE_RO_COMPAT_DIR_NLINK
> > EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE
> > EXT4_FEATURE_INCOMPAT_FILETYPE
> > EXT4_FEATURE_INCOMPAT_FLEX_BG
>
> The above set of features itself looks harmless enough, since they
> have been around for a long time and are mostly just relaxing checks
> in the code. However, I don't think that introducing a NEW feature
> flag will allow the checks for the old features to be removed from
> the code for a long time, so it will just mean checks for two features
> everywhere in the kernel and e2fsprogs.
Oh, absolutely. We'd define new inline functions which would check
for METADATA_BUNDLE_1 (for example) as well as those extra features,
and they would be around for a long time.
> Also consider things like INCOMPAT_COMPRESSION and HAS_JOURNAL.
> It would be a shame if we had made a decision like this in the
> past and could not turn these features off, so being able to
> selectively disable these features in the future also has benefits.
Well, yes. I specifically picked the above features as ones where
there really is no downside to enabling them. That's why the htree
feature is missing from the list; that was a deliberate choice on my
part.
> Couldn't this all be done in the tools level, instead of changing
> the feature flags? Have debugfs/dumpe2fs/tune2fs treat a set
> of feature flags as "default_ext4" would be equivalent?
There are two reasons to do this, in my mind. One is it shortens the
long list of feature flags that get displayed by dumpe2fs and which
some people might want to specify on the mke2fs command line. That is
definitely something that can be done at the tools level, yes.
The other reason to do this, though, is to make it very clear that
this is the bundle that we really are supporting, to discourage people
from creating file systems that have flex_bg, but not sparse_super,
for example. The goal is to reduce the testing matrix, very
explicitly. Yes, we could do the same thing on the ext4 wiki (once
kernel.org fixes it so we can update it, sigh), but I think it makes
much more of an impact when it's in the source code.
> This could also be done at the tools level, by preventing users from
> setting strange combinations of feature flags unless they pass the
> "--yes-this-feature-combination-is-untested" to mke2fs, tune2fs,
> and debugfs, and deprecating truly ancient features entirely.
>
> I would be happy to just deprecate ancient features like
> SPARSE_SUPER, LARGE_FILE, FILETYPE, v1 filesystems entirely, and
> prevent them from being turned off, and have e2fsck "fix" any such
> filesystem that it finds (with a clear warning). If such ancient
> filesystems exist, they will not be running new e2fsprogs either.
Sure, and in some sense that's what I am doing by proposing that we
define a new INCOMPAT metadata flag which does exactly this. I could
have done it by just bumping the major number in the superblock, but
that would have caused progams like dumpe2fs to completely break.
Using a new flag to bundle a new ones, especially when it's very easy
to convert back and forth, is something that makes a lot of sense.
> Next in line would be EXT_ATTR (with v1 xattrs) and DIR_INDEX,
> since they have been supported in ext3 for a long time. It is
> probably too early to deprecate DIR_NLINK, EXTRA_ISIZE, HUGE_FILE
> and FLEX_BG, since they are new in ext4, but eventually those too.
I'd bundle EXT_ATTR in as well, but I wouldn't bundle in DIR_INDEX,
since there are times when people don't want it on.
> One improvement of the ZFS implementation is that it distinguishes
> between "allowed" features and "in-use" features. That allows the
> maximum set of features to be enabled at format/upgrade time, but
> doesn't cause interoperability problems until the features are used.
How does this work in practice? How does the feature make the
transition from "allowed" to "in-use"? What does it mean if a feature
bit is set in the "allowed" field of the superblock? And who gets to
make the decision about starting to use some new feature? How do you
know that you have both an upgraded kernel *and* upgraded userspace?
Or is that part of an automatic assumption made by Sun that upgrades
of kernel and userspace are always coordinated?
- Ted
next prev parent reply other threads:[~2012-02-10 21:11 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-07 8:27 [PATCH v2.3 00/23] ext4: Add metadata checksumming Darrick J. Wong
2012-01-07 8:27 ` [PATCH 01/23] ext4: Create a new BH_Verified flag to avoid unnecessary metadata validation Darrick J. Wong
2012-01-07 8:28 ` [PATCH 02/23] ext4: Change on-disk layout to support extended metadata checksumming Darrick J. Wong
2012-01-07 8:28 ` [PATCH 03/23] ext4: Record the checksum algorithm in use in the superblock Darrick J. Wong
2012-01-07 8:28 ` [PATCH 04/23] ext4: Only call out to crc32c if necessary Darrick J. Wong
2012-01-07 8:28 ` [PATCH 05/23] ext4: Calculate and verify superblock checksum Darrick J. Wong
2012-01-07 8:28 ` [PATCH 06/23] ext4: Calculate and verify inode checksums Darrick J. Wong
2012-01-07 8:28 ` [PATCH 07/23] ext4: Calculate and verify checksums for inode bitmaps Darrick J. Wong
2012-01-07 8:28 ` [PATCH 08/23] ext4: Calculate and verify block bitmap checksum Darrick J. Wong
2012-01-07 8:28 ` [PATCH 09/23] ext4: Verify and calculate checksums for extent tree blocks Darrick J. Wong
2012-01-07 8:28 ` [PATCH 10/23] ext4: Calculate and verify checksums for htree nodes Darrick J. Wong
2012-01-07 8:29 ` [PATCH 11/23] ext4: Calculate and verify checksums of directory leaf blocks Darrick J. Wong
2012-01-07 8:29 ` [PATCH 12/23] ext4: Calculate and verify checksums of extended attribute blocks Darrick J. Wong
2012-01-07 8:29 ` [PATCH 13/23] ext4: Add new feature to make block group checksums use metadata_csum algorithm Darrick J. Wong
[not found] ` <8ED6E1F9-DB56-4D31-BCA8-2A3A8D514BD5@dilger.ca>
2012-02-13 22:28 ` Ted Ts'o
2012-02-29 1:27 ` [RFC] e2fsprogs: Rework metadata_csum/gdt_csum flag handling Darrick J. Wong
2012-02-29 5:40 ` Andreas Dilger
2012-03-03 3:50 ` [RFC v2] " Darrick J. Wong
2012-02-29 1:32 ` [RFC] ext4: Rework metadata_csum/gdt_csum flag handling in kernel Darrick J. Wong
2012-02-29 5:48 ` Andreas Dilger
2012-03-03 3:56 ` [RFC v2] " Darrick J. Wong
2012-01-07 8:29 ` [PATCH 14/23] ext4: Add checksums to the MMP block Darrick J. Wong
2012-01-07 8:29 ` [PATCH 15/23] jbd2: Change disk layout for metadata checksumming Darrick J. Wong
2012-01-07 8:29 ` [PATCH 16/23] jbd2: Enable journal clients to enable v2 checksumming Darrick J. Wong
2012-01-07 8:29 ` [PATCH 17/23] jbd2: Grab a reference to the crc32c driver only when necessary Darrick J. Wong
2012-01-07 8:29 ` [PATCH 18/23] jbd2: Checksum journal superblock Darrick J. Wong
2012-01-07 8:30 ` [PATCH 19/23] jbd2: Checksum revocation blocks Darrick J. Wong
2012-01-07 8:30 ` [PATCH 20/23] jbd2: Checksum descriptor blocks Darrick J. Wong
2012-01-07 8:30 ` [PATCH 21/23] jbd2: Checksum commit blocks Darrick J. Wong
2012-01-07 8:30 ` [PATCH 22/23] jbd2: Checksum data blocks that are stored in the journal Darrick J. Wong
2012-01-07 8:30 ` [PATCH 23/23] ext4/jbd2: Add metadata checksumming to the list of supported features Darrick J. Wong
2012-02-08 18:08 ` Collapsing the number of feature flags (was Re: [PATCH v2.3 00/23] ext4: Add metadata checksumming) Ted Ts'o
2012-02-09 19:54 ` Darrick J. Wong
2012-02-09 22:49 ` Ted Ts'o
2012-02-10 19:11 ` Andreas Dilger
2012-02-10 21:11 ` Ted Ts'o [this message]
2012-02-12 1:38 ` Andreas Dilger
2012-02-12 2:55 ` Ted Ts'o
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=20120210211131.GB5381@thunk.org \
--to=tytso@mit.edu \
--cc=adilger@dilger.ca \
--cc=djwong@us.ibm.com \
--cc=linux-ext4@vger.kernel.org \
/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.