]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
tune2fs: Remove support for clearing the SPARSE_SUPER feature
authorTheodore Ts'o <tytso@mit.edu>
Fri, 29 Feb 2008 02:26:01 +0000 (21:26 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 29 Feb 2008 02:26:01 +0000 (21:26 -0500)
Clearing SPARSE_SUPER is dangerous; it can result in a filesystem
which e2fsck can't fix easily.  Since there is very few good reasons
for wanting to turn this feature off, disable tune2fs's abiity to do
this.  Users who really want this can use debugfs.

Also, deprecate the tune2fs -s option.  Remove it from the man page
and usage message.

Addresses-Sourceforge-Bug: #1840286

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
misc/tune2fs.8.in
misc/tune2fs.c

index ff8ae4882ea3cf7f42beaffe35636792e47e768f..8b59c1783864dc3fe7487eabce46185f2de48748 100644 (file)
@@ -461,12 +461,6 @@ can be run to convert existing directories to the hashed B-tree format.
 .BI \-r " reserved-blocks-count"
 Set the number of reserved filesystem blocks.
 .TP
-.BR \-s " [" 0 | 1 ]
-Turn the sparse super feature off or on.  Turning this feature on
-saves space on really big filesystems.  This is the same as using the
-.B "\-O sparse_super"
-option.
-.TP
 .BI \-T " time-last-checked"
 Set the time the filesystem was last checked using
 .BR  e2fsck .
index 184b5d62e3856577b4562e68e0630cedcf1fe8a9..4f66d42b0229116ba4f0398bed48882c0e1921bf 100644 (file)
@@ -97,10 +97,11 @@ static void usage(void)
        fprintf(stderr,
                _("Usage: %s [-c max_mounts_count] [-e errors_behavior] "
                  "[-g group]\n"
-                 "\t[-i interval[d|m|w]] [-j] [-J journal_options]\n"
-                 "\t[-l] [-s sparse_flag] [-m reserved_blocks_percent]\n"
-                 "\t[-o [^]mount_options[,...]] [-r reserved_blocks_count]\n"
-                 "\t[-u user] [-C mount_count] [-L volume_label]\n"
+                 "\t[-i interval[d|m|w]] [-j] [-J journal_options] [-l]\n"
+                 "\t[-m reserved_blocks_percent] "
+                 "[-o [^]mount_options[,...]] \n"
+                 "\t[-r reserved_blocks_count] [-u user] [-C mount_count] "
+                 "[-L volume_label]\n"
                  "\t[-M last_mounted_dir] [-O [^]feature[,...]]\n"
                  "\t[-E extended-option[,...]] [-T last_check_time] "
                  "[-U UUID] device\n"), program_name);
@@ -126,8 +127,7 @@ static __u32 clear_ok_features[3] = {
        /* Incompat */
        EXT2_FEATURE_INCOMPAT_FILETYPE,
        /* R/O compat */
-       EXT2_FEATURE_RO_COMPAT_LARGE_FILE |
-               EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER
+       EXT2_FEATURE_RO_COMPAT_LARGE_FILE
 };
 
 /*
@@ -719,7 +719,7 @@ static void parse_tune2fs_options(int argc, char **argv)
                                r_flag = 1;
                                open_flag = EXT2_FLAG_RW;
                                break;
-                       case 's':
+                       case 's': /* Deprecated */
                                s_flag = atoi(optarg);
                                open_flag = EXT2_FLAG_RW;
                                break;
@@ -1005,19 +1005,9 @@ int main (int argc, char ** argv)
                }
        }
        if (s_flag == 0) {
-               if (!(sb->s_feature_ro_compat &
-                     EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER))
-                       fputs(_("\nThe filesystem already has sparse "
-                               "superblocks disabled.\n"), stderr);
-               else {
-                       sb->s_feature_ro_compat &=
-                               ~EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER;
-                       sb->s_state &= ~EXT2_VALID_FS;
-                       fs->flags |= EXT2_FLAG_MASTER_SB_ONLY;
-                       ext2fs_mark_super_dirty(fs);
-                       printf(_("\nSparse superblock flag cleared.  %s"),
-                              _(please_fsck));
-               }
+               fputs(_("\nClearing the sparse superflag not supported.\n"),
+                     stderr);
+               exit(1);
        }
        if (T_flag) {
                sb->s_lastcheck = last_check_time;