]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
e2fsprogs-debugfs-supported_features.patch
authorAndreas Dilger <adilger@sun.com>
Sat, 2 Feb 2008 08:56:07 +0000 (01:56 -0700)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 11 Feb 2008 03:49:43 +0000 (22:49 -0500)
Print out the currently supported features of e2fsprogs/libext2fs
via a new "debugfs supported_features" command.

Signed-off-by: Kalpak Shah <kalpak@clusterfs.com>
Signed-off-by: Andreas Dilger <adilger@clusterfs.com>
debugfs/debug_cmds.ct
debugfs/debugfs.c
lib/ext2fs/ext2_fs.h

index a4a5a4c15c583bbc4a600eec253db255bd6a5683..59314b81dcd13907365576a9b3b0614274260116 100644 (file)
@@ -154,5 +154,8 @@ request     do_dump_unused, "Dump unused blocks",
 request do_set_current_time, "Set current time to use when setting filesystme fields",
        set_current_time;
 
+request do_supported_features, "Print features supported by this version of e2fsprogs",
+       supported_features;
+
 end;
 
index 9ebd92481099cf62a4d10f003af1be344c933c61..9f0bfc21dd09ceaac703e026abec3b57cd525474 100644 (file)
@@ -1773,6 +1773,44 @@ void do_set_current_time(int argc, char *argv[])
        }
 }
 
+void do_supported_features(int argc, char *argv[])
+{
+        FILE   *out = stdout;
+        int    i, j, ret;
+        __u32  supp[3] = { EXT2_LIB_FEATURE_COMPAT_SUPP,
+                           EXT2_LIB_FEATURE_INCOMPAT_SUPP,
+                           EXT2_LIB_FEATURE_RO_COMPAT_SUPP };
+       __u32   m;
+       int compat;
+       unsigned int feature_flag;
+
+       if (argc >= 1) {
+               ret = e2p_string2feature(argv[1], &compat, &feature_flag);
+               if (ret)
+                       goto err;
+
+               if (!(supp[compat] & feature_flag))
+                       goto err;
+
+               fprintf(out, "Supported feature: %s\n", argv[1]);
+       } else {
+               fprintf(out, "Supported features:");
+               for (i = 0; i < 3; i++) {
+                       for (j = 0, m = 1; j < 32; j++, m <<= 1) {
+                               if (supp[i] & m)
+                                       fprintf(out, " %s",
+                                               e2p_feature2string(i, m));
+                       }
+               }
+               fprintf(out, "\n");
+       }
+
+       return;
+
+err:
+       com_err(argv[0], 0, "Unknown feature: %s\n", argv[1]);
+}
+
 static int source_file(const char *cmd_file, int sci_idx)
 {
        FILE            *f;
index 51cecfa029ab55b94214aa93caaec3e5a923d55e..9218e42285be6760e398de55a7c20677edeb5bcd 100644 (file)
@@ -669,8 +669,7 @@ struct ext2_super_block {
 #define EXT2_FEATURE_RO_COMPAT_SUPP    (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
                                         EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
                                         EXT4_FEATURE_RO_COMPAT_DIR_NLINK| \
-                                        EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE| \
-                                        EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
+                                        EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE)
 
 /*
  * Default values for user and/or group using reserved blocks