From: Theodore Ts'o Date: Wed, 27 Feb 2008 20:01:19 +0000 (-0500) Subject: Add support for manipulating large_file feature in mke2fs and tune2fs X-Git-Tag: v1.40.7~13 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=558df54458075856b3a76051648323643a56dadc;p=tools%2Fe2fsprogs.git Add support for manipulating large_file feature in mke2fs and tune2fs Previously we just let the kernel and e2fsck do this automatically, but e2fsck will no longer automatically clear the large_file feature. It still isn't really necessary to worry about this feature flag explicitly, but some users seem to care. Addresses-Red-Hat-Bugzilla: #258381 Signed-off-by: "Theodore Ts'o" --- diff --git a/misc/mke2fs.8.in b/misc/mke2fs.8.in index 65c42bf..6b394a5 100644 --- a/misc/mke2fs.8.in +++ b/misc/mke2fs.8.in @@ -415,6 +415,10 @@ prefix the feature name with a caret ('^') character. The pseudo-filesystem feature "none" will clear all filesystem features. .RS 1.2i .TP +.B large_file +Filesystem can contain files that are greater than 2GB. (Modern kernels +set this feature automatically when a file > 2GB is created.) +.TP .B dir_index Use hashed b-trees to speed up lookups in large directories. .TP diff --git a/misc/mke2fs.c b/misc/mke2fs.c index cfc8116..e16c5f0 100644 --- a/misc/mke2fs.c +++ b/misc/mke2fs.c @@ -897,15 +897,19 @@ static void parse_extended_opts(struct ext2_super_block *param, } static __u32 ok_features[3] = { + /* Compat */ EXT3_FEATURE_COMPAT_HAS_JOURNAL | EXT2_FEATURE_COMPAT_RESIZE_INODE | EXT2_FEATURE_COMPAT_DIR_INDEX | EXT2_FEATURE_COMPAT_LAZY_BG | - EXT2_FEATURE_COMPAT_EXT_ATTR, /* Compat */ - EXT2_FEATURE_INCOMPAT_FILETYPE| /* Incompat */ + EXT2_FEATURE_COMPAT_EXT_ATTR, + /* Incompat */ + EXT2_FEATURE_INCOMPAT_FILETYPE| EXT3_FEATURE_INCOMPAT_JOURNAL_DEV| EXT2_FEATURE_INCOMPAT_META_BG, - EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER /* R/O compat */ + /* R/O compat */ + EXT2_FEATURE_RO_COMPAT_LARGE_FILE| + EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER }; diff --git a/misc/tune2fs.8.in b/misc/tune2fs.8.in index 2a8c42b..b37e99d 100644 --- a/misc/tune2fs.8.in +++ b/misc/tune2fs.8.in @@ -415,6 +415,10 @@ The following filesystem features can be set or cleared using .BR tune2fs : .RS 1.2i .TP +.B large_file +Filesystem can contain files that are greater than 2GB. (Modern kernels +set this feature automatically when a file > 2GB is created.) +.TP .B dir_index Use hashed b-trees to speed up lookups in large directories. .TP diff --git a/misc/tune2fs.c b/misc/tune2fs.c index 4529e24..184b5d6 100644 --- a/misc/tune2fs.c +++ b/misc/tune2fs.c @@ -108,18 +108,26 @@ static void usage(void) } static __u32 ok_features[3] = { + /* Compat */ EXT3_FEATURE_COMPAT_HAS_JOURNAL | - EXT2_FEATURE_COMPAT_DIR_INDEX, /* Compat */ - EXT2_FEATURE_INCOMPAT_FILETYPE, /* Incompat */ - EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER /* R/O compat */ + EXT2_FEATURE_COMPAT_DIR_INDEX, + /* Incompat */ + EXT2_FEATURE_INCOMPAT_FILETYPE, + /* R/O compat */ + EXT2_FEATURE_RO_COMPAT_LARGE_FILE | + EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER }; static __u32 clear_ok_features[3] = { + /* Compat */ EXT3_FEATURE_COMPAT_HAS_JOURNAL | EXT2_FEATURE_COMPAT_RESIZE_INODE | - EXT2_FEATURE_COMPAT_DIR_INDEX, /* Compat */ - EXT2_FEATURE_INCOMPAT_FILETYPE, /* Incompat */ - EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER /* R/O compat */ + EXT2_FEATURE_COMPAT_DIR_INDEX, + /* Incompat */ + EXT2_FEATURE_INCOMPAT_FILETYPE, + /* R/O compat */ + EXT2_FEATURE_RO_COMPAT_LARGE_FILE | + EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER }; /* @@ -392,7 +400,9 @@ static void update_feature_set(ext2_filsys fs, char *features) FEATURE_CHANGED(E2P_FEATURE_INCOMPAT, EXT2_FEATURE_INCOMPAT_FILETYPE) || FEATURE_CHANGED(E2P_FEATURE_COMPAT, - EXT2_FEATURE_COMPAT_RESIZE_INODE)) { + EXT2_FEATURE_COMPAT_RESIZE_INODE) || + FEATURE_OFF(E2P_FEATURE_RO_INCOMPAT, + EXT2_FEATURE_RO_COMPAT_LARGE_FILE)) { sb->s_state &= ~EXT2_VALID_FS; printf("\n%s\n", _(please_fsck)); }