Allow debugfs and dumpe2fs to support fs features under development
Add support for the new flag EXT2_FLAG_SOFTSUPP_FEATURES flag to
ext2fs_open() , which allows application to open filesystes with features
which are currently only partially supported by e2fsprogs.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
diff --git a/lib/ext2fs/openfs.c b/lib/ext2fs/openfs.c
index f09484f..5050117 100644
--- a/lib/ext2fs/openfs.c
+++ b/lib/ext2fs/openfs.c
@@ -86,6 +86,7 @@
ext2_filsys fs;
errcode_t retval;
unsigned long i;
+ __u32 features;
int j, groups_per_block, blocks_per_group, io_flags;
blk_t group_block, blk;
char *dest, *cp;
@@ -197,17 +198,27 @@
* Check for feature set incompatibility
*/
if (!(flags & EXT2_FLAG_FORCE)) {
- if (fs->super->s_feature_incompat &
- ~EXT2_LIB_FEATURE_INCOMPAT_SUPP) {
+ features = fs->super->s_feature_incompat;
+#ifdef EXT2_LIB_SOFTSUPP_INCOMPAT
+ if (flags & EXT2_FLAG_SOFTSUPP_FEATURES)
+ features &= !EXT2_LIB_SOFTSUPP_INCOMPAT;
+#endif
+ if (features & ~EXT2_LIB_FEATURE_INCOMPAT_SUPP) {
retval = EXT2_ET_UNSUPP_FEATURE;
goto cleanup;
}
+
+ features = fs->super->s_feature_ro_compat;
+#ifdef EXT2_LIB_SOFTSUPP_RO_COMPAT
+ if (flags & EXT2_FLAG_SOFTSUPP_FEATURES)
+ features &= !EXT2_LIB_SOFTSUPP_RO_COMPAT;
+#endif
if ((flags & EXT2_FLAG_RW) &&
- (fs->super->s_feature_ro_compat &
- ~EXT2_LIB_FEATURE_RO_COMPAT_SUPP)) {
+ (features & ~EXT2_LIB_FEATURE_RO_COMPAT_SUPP)) {
retval = EXT2_ET_RO_UNSUPP_FEATURE;
goto cleanup;
}
+
if (!(flags & EXT2_FLAG_JOURNAL_DEV_OK) &&
(fs->super->s_feature_incompat &
EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)) {