tags 392107 +pending severity normal thanks The following patch has been applied to the mainline repository.
Since the Debian installer has a workaround for the bug, I've reassigned its severity to normal. - Ted # HG changeset patch # User [EMAIL PROTECTED] # Date 1161145871 14400 # Node ID 733641c1e283d27b829ae72f51e18e43f8304652 # Parent 32c7d2357ee2232d4a76e86ff9738a234a6b8a65 Fix mke2fs error checking when creating revision 0 filesystems Fix revision 0 error checking so that it doesn't give spurious error when the user gives a command-line option of "-O none". Add error checking so that "-r 0 -j", "-r 0 -s 1", and "-r 0 -E resize=XXX" will print an explanatory error message and abort. Addresses Debian bug: #392107 Signed-off-by: "Theodore Ts'o" <[EMAIL PROTECTED]> diff -r 32c7d2357ee2 -r 733641c1e283 misc/ChangeLog --- a/misc/ChangeLog Wed Oct 04 09:12:35 2006 -0400 +++ b/misc/ChangeLog Wed Oct 18 00:31:11 2006 -0400 @@ -1,3 +1,12 @@ 2006-10-03 Theodore Tso <[EMAIL PROTECTED] +2006-10-18 Theodore Tso <[EMAIL PROTECTED]> + + * mke2fs.c: Fix revision 0 error checking so that it doesn't give + a spurious error when the user gives a command-line option + of "-O none". (Addresses Debian bug: #392107). Add + error checking so that "-r 0 -j", "-r 0 -s 1", and + "-r 0 -E resize=XXX" will print an explanatory error + message and abort. + 2006-10-03 Theodore Tso <[EMAIL PROTECTED]> * badblocks.c: Fix the interpretation of the last_block parameter diff -r 32c7d2357ee2 -r 733641c1e283 misc/mke2fs.c --- a/misc/mke2fs.c Wed Oct 04 09:12:35 2006 -0400 +++ b/misc/mke2fs.c Wed Oct 18 00:31:11 2006 -0400 @@ -831,6 +831,11 @@ static void parse_extended_opts(struct e rsv_gdb = EXT2_ADDR_PER_BLOCK(param); if (rsv_gdb > 0) { + if (param->s_rev_level == EXT2_GOOD_OLD_REV) { + fprintf(stderr, + _("On-line resizing not supported with revision 0 filesystems\n")); + exit(1); + } param->s_feature_compat |= EXT2_FEATURE_COMPAT_RESIZE_INODE; @@ -1273,39 +1278,58 @@ static void PRS(int argc, char *argv[]) /* Figure out what features should be enabled */ - if (r_opt == EXT2_GOOD_OLD_REV && fs_features) { + tmp = tmp2 = NULL; + if (fs_param.s_rev_level != EXT2_GOOD_OLD_REV) { + profile_get_string(profile, "defaults", "base_features", 0, + "filetype,sparse_super", &tmp); + profile_get_string(profile, "fs_types", fs_type, + "base_features", tmp, &tmp2); + edit_feature(tmp2, &fs_param.s_feature_compat); + free(tmp); + free(tmp2); + + tmp = tmp2 = NULL; + profile_get_string(profile, "defaults", "default_features", 0, + "", &tmp); + profile_get_string(profile, "fs_types", fs_type, + "default_features", tmp, &tmp2); + } + edit_feature(fs_features ? fs_features : tmp2, + &fs_param.s_feature_compat); + if (tmp) + free(tmp); + if (tmp2) + free(tmp2); + + if (r_opt == EXT2_GOOD_OLD_REV && + (fs_param.s_feature_compat || fs_param.s_feature_incompat || + fs_param.s_feature_incompat)) { fprintf(stderr, _("Filesystem features not supported " "with revision 0 filesystems\n")); exit(1); } - profile_get_string(profile, "defaults", "base_features", 0, - "filetype,sparse_super", &tmp); - profile_get_string(profile, "fs_types", fs_type, "base_features", - tmp, &tmp2); - edit_feature(tmp2, &fs_param.s_feature_compat); - free(tmp); - free(tmp2); - - profile_get_string(profile, "defaults", "default_features", 0, - "", &tmp); - profile_get_string(profile, "fs_types", fs_type, - "default_features", tmp, &tmp2); - edit_feature(fs_features ? fs_features : tmp2, - &fs_param.s_feature_compat); - free(tmp); - free(tmp2); - - if (s_opt > 0) + if (s_opt > 0) { + if (r_opt == EXT2_GOOD_OLD_REV) { + fprintf(stderr, _("Sparse superblocks not supported " + "with revision 0 filesystems\n")); + exit(1); + } fs_param.s_feature_ro_compat |= EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER; - else if (s_opt == 0) + } else if (s_opt == 0) fs_param.s_feature_ro_compat &= ~EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER; - if (journal_size != 0) + if (journal_size != 0) { + if (r_opt == EXT2_GOOD_OLD_REV) { + fprintf(stderr, _("Journals not supported " + "with revision 0 filesystems\n")); + exit(1); + } fs_param.s_feature_compat |= EXT3_FEATURE_COMPAT_HAS_JOURNAL; + } if (fs_param.s_feature_incompat & EXT3_FEATURE_INCOMPAT_JOURNAL_DEV) { @@ -1317,12 +1341,6 @@ static void PRS(int argc, char *argv[]) fs_param.s_feature_ro_compat = 0; } - if (fs_param.s_rev_level == EXT2_GOOD_OLD_REV) { - fs_param.s_feature_incompat = 0; - fs_param.s_feature_compat = 0; - fs_param.s_feature_ro_compat = 0; - } - /* Set first meta blockgroup via an environment variable */ /* (this is mostly for debugging purposes) */ if ((fs_param.s_feature_incompat & EXT2_FEATURE_INCOMPAT_META_BG) && -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]