From 2b588d735bb21c9e8a2eaf66d03055649de79580 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Thu, 2 Aug 2012 20:47:45 -0400 Subject: [PATCH] mke2fs: warn if not enabling all the features that metadata_csum wants The metadata_csum feature works best when two features are enabled. These features are "extents" (because the block map has no space for checksums) and "64bit" (this enables storage of full 32-bit checksums in certain fields). Print a warning if the user tries to create a filesystem without those features. Signed-off-by: Darrick J. Wong Signed-off-by: Theodore Ts'o --- misc/mke2fs.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/misc/mke2fs.c b/misc/mke2fs.c index b561ca6..072e656 100644 --- a/misc/mke2fs.c +++ b/misc/mke2fs.c @@ -2314,6 +2314,25 @@ int main (int argc, char *argv[]) } fs->progress_ops = &ext2fs_numeric_progress_ops; + /* Check the user's mkfs options for metadata checksumming */ + if (!quiet && + EXT2_HAS_RO_COMPAT_FEATURE(fs->super, + EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) { + if (!EXT2_HAS_INCOMPAT_FEATURE(fs->super, + EXT3_FEATURE_INCOMPAT_EXTENTS)) + printf(_("Extents are not enabled. The file extent " + "tree can be checksummed, whereas block maps " + "cannot. Not enabling extents reduces the " + "coverage of metadata checksumming. " + "Pass -O extents to rectify.\n")); + if (!EXT2_HAS_INCOMPAT_FEATURE(fs->super, + EXT4_FEATURE_INCOMPAT_64BIT)) + printf(_("64-bit filesystem support is not " + "enabled. The larger fields afforded by " + "this feature enable full-strength " + "checksumming. Pass -O 64bit to rectify.\n")); + } + /* Can't undo discard ... */ if (!noaction && discard && (io_ptr != undo_io_manager)) { retval = mke2fs_discard_device(fs); -- 1.8.3.1