2014-02-19 14:57:26

by Lukas Czerner

[permalink] [raw]
Subject: [PATCH] e2fsprogs: Remove any occurrence of ext4dev and test_fs

ext4dev is no longer supported by kernel so we really need to get rid of
it entirely from e2fsprogs.

This patch removes any occurrence of ext4dev and test_fs flag from the
e2fsprogs tools with one exception. Out of paranoia we can still leave
the possibility to remove test_fs flag (EXT2_FLAGS_TEST_FILESYS) from
the file system using e2fsck by specifying clear_test_fs_flag option in
the e2fsck.config file.

Signed-off-by: Lukas Czerner <[email protected]>
---
e2fsck/Makefile.in | 10 +++----
e2fsprogs.spec.in | 4 ---
lib/blkid/probe.c | 80 ++--------------------------------------------------
misc/Makefile.in | 32 ++++++---------------
misc/fsck.c | 7 ++---
misc/mke2fs.8.in | 4 ---
misc/mke2fs.c | 9 +-----
misc/mke2fs.conf.in | 5 ----
misc/tune2fs.8.in | 8 ------
misc/tune2fs.c | 12 +-------
tests/mke2fs.conf.in | 5 ----
11 files changed, 20 insertions(+), 156 deletions(-)

diff --git a/e2fsck/Makefile.in b/e2fsck/Makefile.in
index 8ca329b..441485b 100644
--- a/e2fsck/Makefile.in
+++ b/e2fsck/Makefile.in
@@ -207,7 +207,7 @@ install: $(PROGS) $(MANPAGES) $(FMANPAGES) installdirs
$(ES) " INSTALL $(root_sbindir)/$$i"; \
$(INSTALL_PROGRAM) $$i $(DESTDIR)$(root_sbindir)/$$i; \
done
- $(Q) for i in ext2 ext3 ext4 ext4dev; do \
+ $(Q) for i in ext2 ext3 ext4; do \
$(ES) " LINK $(root_sbindir)/fsck.$$i"; \
(cd $(DESTDIR)$(root_sbindir); \
$(LN) $(LINK_INSTALL_FLAGS) e2fsck fsck.$$i); \
@@ -226,7 +226,7 @@ install: $(PROGS) $(MANPAGES) $(FMANPAGES) installdirs
$(ES) " INSTALL_DATA $(man5dir)/$$i"; \
$(INSTALL_DATA) $$i $(DESTDIR)$(man5dir)/$$i; \
done
- $(Q) for i in ext2 ext3 ext4 ext4dev; do \
+ $(Q) for i in ext2 ext3 ext4; do \
$(ES) " LINK $(man8dir)/fsck.$$i.8"; \
(cd $(DESTDIR)$(man8dir); \
$(LN) $(LINK_INSTALL_FLAGS) e2fsck.8 fsck.$$i.8); \
@@ -244,8 +244,7 @@ uninstall:
done
$(RM) -f $(DESTDIR)$(root_sbindir)/fsck.ext2 \
$(DESTDIR)$(root_sbindir)/fsck.ext3 \
- $(DESTDIR)$(root_sbindir)/fsck.ext4 \
- $(DESTDIR)$(root_sbindir)/fsck.ext4dev
+ $(DESTDIR)$(root_sbindir)/fsck.ext4
for i in $(MANPAGES); do \
$(RM) -f $(DESTDIR)$(man8dir)/$$i; \
done
@@ -254,8 +253,7 @@ uninstall:
done
$(RM) -f $(DESTDIR)$(root_sbindir)/fsck.ext2 \
$(DESTDIR)$(root_sbindir)/fsck.ext3 \
- $(DESTDIR)$(root_sbindir)/fsck.ext4 \
- $(DESTDIR)$(root_sbindir)/fsck.ext4dev
+ $(DESTDIR)$(root_sbindir)/fsck.ext4

clean:
$(RM) -f $(PROGS) \#* *\# *.s *.o *.a *~ core e2fsck.static \
diff --git a/e2fsprogs.spec.in b/e2fsprogs.spec.in
index b188b75..c739e63 100644
--- a/e2fsprogs.spec.in
+++ b/e2fsprogs.spec.in
@@ -122,14 +122,12 @@ exit 0
%{_root_sbindir}/fsck.ext2
%{_root_sbindir}/fsck.ext3
%{_root_sbindir}/fsck.ext4
-%{_root_sbindir}/fsck.ext4dev
%{_root_sbindir}/logsave
%{_root_sbindir}/mke2fs
%{_root_etcdir}/mke2fs.conf
%{_root_sbindir}/mkfs.ext2
%{_root_sbindir}/mkfs.ext3
%{_root_sbindir}/mkfs.ext4
-%{_root_sbindir}/mkfs.ext4dev
%{_root_sbindir}/resize2fs
%{_root_sbindir}/tune2fs
%{_sbindir}/filefrag
@@ -164,7 +162,6 @@ exit 0
%{_mandir}/man8/fsck.ext2.8*
%{_mandir}/man8/fsck.ext3.8*
%{_mandir}/man8/fsck.ext4.8*
-%{_mandir}/man8/fsck.ext4dev.8*
%{_mandir}/man8/e2image.8*
%{_mandir}/man8/e2label.8*
%{_mandir}/man8/e2undo.8*
@@ -174,7 +171,6 @@ exit 0
%{_mandir}/man8/mkfs.ext2.8*
%{_mandir}/man8/mkfs.ext3.8*
%{_mandir}/man8/mkfs.ext4.8*
-%{_mandir}/man8/mkfs.ext4dev.8*
%{_mandir}/man8/mklost+found.8*
%{_mandir}/man8/resize2fs.8*
%{_mandir}/man8/tune2fs.8*
diff --git a/lib/blkid/probe.c b/lib/blkid/probe.c
index 4b797ab..2877fdf 100644
--- a/lib/blkid/probe.c
+++ b/lib/blkid/probe.c
@@ -305,64 +305,6 @@ static int system_supports_ext4(void)
return ret;
}

-static int system_supports_ext4dev(void)
-{
- static time_t last_check = 0;
- static int ret = -1;
- time_t now = time(0);
-
- if (ret != -1 || (now - last_check) < 5)
- return ret;
- last_check = now;
- ret = (fs_proc_check("ext4dev") || check_for_modules("ext4dev"));
- return ret;
-}
-
-static int probe_ext4dev(struct blkid_probe *probe,
- struct blkid_magic *id,
- unsigned char *buf)
-{
- struct ext2_super_block *es;
- es = (struct ext2_super_block *)buf;
-
- /* Distinguish from jbd */
- if (blkid_le32(es->s_feature_incompat) &
- EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)
- return -BLKID_ERR_PARAM;
-
- /*
- * If the filesystem does not have a journal and ext2 and ext4
- * is not present, then force this to be detected as an
- * ext4dev filesystem.
- */
- if (!(blkid_le32(es->s_feature_compat) &
- EXT3_FEATURE_COMPAT_HAS_JOURNAL) &&
- !system_supports_ext2() && !system_supports_ext4() &&
- system_supports_ext4dev() &&
- linux_version_code() >= EXT4_SUPPORTS_EXT2)
- goto force_ext4dev;
-
- /*
- * If the filesystem is marked as OK for use by in-development
- * filesystem code, but ext4dev is not supported, and ext4 is,
- * then don't call ourselves ext4dev, since we should be
- * detected as ext4 in that case.
- *
- * If the filesystem is marked as in use by production
- * filesystem, then it can only be used by ext4 and NOT by
- * ext4dev, so always disclaim we are ext4dev in that case.
- */
- if (blkid_le32(es->s_flags) & EXT2_FLAGS_TEST_FILESYS) {
- if (!system_supports_ext4dev() && system_supports_ext4())
- return -BLKID_ERR_PARAM;
- } else
- return -BLKID_ERR_PARAM;
-
-force_ext4dev:
- get_ext2_info(probe->dev, id, buf);
- return 0;
-}
-
static int probe_ext4(struct blkid_probe *probe, struct blkid_magic *id,
unsigned char *buf)
{
@@ -393,21 +335,7 @@ static int probe_ext4(struct blkid_probe *probe, struct blkid_magic *id,
return -BLKID_ERR_PARAM;

force_ext4:
- /*
- * If the filesystem is a OK for use by in-development
- * filesystem code, and ext4dev is supported or ext4 is not
- * supported, then don't call ourselves ext4, so we can redo
- * the detection and mark the filesystem as ext4dev.
- *
- * If the filesystem is marked as in use by production
- * filesystem, then it can only be used by ext4 and NOT by
- * ext4dev.
- */
- if (blkid_le32(es->s_flags) & EXT2_FLAGS_TEST_FILESYS) {
- if (system_supports_ext4dev() || !system_supports_ext4())
- return -BLKID_ERR_PARAM;
- }
- get_ext2_info(probe->dev, id, buf);
+ get_ext2_info(probe->dev, id, buf);
return 0;
}

@@ -453,11 +381,10 @@ static int probe_ext2(struct blkid_probe *probe, struct blkid_magic *id,
return -BLKID_ERR_PARAM;

/*
- * If ext2 is not present, but ext4 or ext4dev are, then
+ * If ext2 is not present, but ext4 is, then
* disclaim we are ext2
*/
- if (!system_supports_ext2() &&
- (system_supports_ext4() || system_supports_ext4dev()) &&
+ if (!system_supports_ext2() && system_supports_ext4() &&
linux_version_code() >= EXT4_SUPPORTS_EXT2)
return -BLKID_ERR_PARAM;

@@ -1400,7 +1327,6 @@ static struct blkid_magic type_array[] = {
{ "oracleasm", 0, 32, 8, "ORCLDISK", probe_oracleasm },
{ "ntfs", 0, 3, 8, "NTFS ", probe_ntfs },
{ "jbd", 1, 0x38, 2, "\123\357", probe_jbd },
- { "ext4dev", 1, 0x38, 2, "\123\357", probe_ext4dev },
{ "ext4", 1, 0x38, 2, "\123\357", probe_ext4 },
{ "ext3", 1, 0x38, 2, "\123\357", probe_ext3 },
{ "ext2", 1, 0x38, 2, "\123\357", probe_ext2 },
diff --git a/misc/Makefile.in b/misc/Makefile.in
index e8cfdb5..90986f6 100644
--- a/misc/Makefile.in
+++ b/misc/Makefile.in
@@ -461,7 +461,7 @@ install: all $(SMANPAGES) $(UMANPAGES) installdirs
$(ES) " INSTALL $(sbindir)/$$i"; \
$(INSTALL_PROGRAM) $$i $(DESTDIR)$(sbindir)/$$i; \
done
- $(Q) for i in ext2 ext3 ext4 ext4dev; do \
+ $(Q) for i in ext2 ext3 ext4; do \
$(ES) " LINK $(root_sbindir)/mkfs.$$i"; \
(cd $(DESTDIR)$(root_sbindir); \
$(LN) $(LINK_INSTALL_FLAGS) mke2fs mkfs.$$i); \
@@ -490,7 +490,7 @@ install: all $(SMANPAGES) $(UMANPAGES) installdirs
done
$(Q) $(RM) -f $(DESTDIR)$(man8dir)/mkfs.ext2.8.gz \
$(DESTDIR)$(man8dir)/mkfs.ext3.8.gz
- $(Q) for i in ext2 ext3 ext4 ext4dev; do \
+ $(Q) for i in ext2 ext3 ext4; do \
$(ES) " LINK mkfs.$$i.8"; \
(cd $(DESTDIR)$(man8dir); \
$(LN) $(LINK_INSTALL_FLAGS) mke2fs.8 mkfs.$$i.8); \
@@ -519,22 +519,11 @@ install: all $(SMANPAGES) $(UMANPAGES) installdirs
mke2fs.conf; then \
true; \
else \
- if grep -q ext4dev $(DESTDIR)$(root_sysconfdir)/mke2fs.conf ; then \
- $(ES) " INSTALL_DATA $(root_sysconfdir)/mke2fs.conf.e2fsprogs-new"; \
- $(INSTALL_DATA) mke2fs.conf \
- $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-new; \
- echo "Warning: installing mke2fs.conf in $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-new"; \
- echo "Check to see if you need to update your $(root_sysconfdir)/mke2fs.conf"; \
- else \
- $(ES) " INSTALL_DATA $(root_sysconfdir)/mke2fs.conf"; \
- mv $(DESTDIR)$(root_sysconfdir)/mke2fs.conf \
- $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-old; \
- $(INSTALL_DATA) mke2fs.conf \
- $(DESTDIR)$(root_sysconfdir)/mke2fs.conf; \
- echo "Your mke2fs.conf is too old. Backing up old version in"; \
- echo "$(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-old. Please check to see"; \
- echo "if you have any local customizations that you wish to preserve."; \
- fi; \
+ $(ES) " INSTALL_DATA $(root_sysconfdir)/mke2fs.conf.e2fsprogs-new"; \
+ $(INSTALL_DATA) mke2fs.conf \
+ $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-new; \
+ echo "Warning: installing mke2fs.conf in $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-new"; \
+ echo "Check to see if you need to update your $(root_sysconfdir)/mke2fs.conf"; \
echo " "; \
fi; \
else \
@@ -565,8 +554,7 @@ uninstall:
done
$(RM) -f $(DESTDIR)$(root_sbindir)/mkfs.ext2 \
$(DESTDIR)$(root_sbindir)/mkfs.ext3 \
- $(DESTDIR)$(root_sbindir)/mkfs.ext4 \
- $(DESTDIR)$(root_sbindir)/mkfs.ext4dev
+ $(DESTDIR)$(root_sbindir)/mkfs.ext4
for i in $(UPROGS); do \
$(RM) -f $(DESTDIR)$(bindir)/$$i; \
done
@@ -576,11 +564,9 @@ uninstall:
$(RM) -f $(DESTDIR)$(man8dir)/mkfs.ext2.8 \
$(DESTDIR)$(man8dir)/mkfs.ext3.8 \
$(DESTDIR)$(man8dir)/mkfs.ext4.8 \
- $(DESTDIR)$(man8dir)/mkfs.ext4dev.8 \
$(DESTDIR)$(man8dir)/fsck.ext2.8 \
$(DESTDIR)$(man8dir)/fsck.ext3.8 \
- $(DESTDIR)$(man8dir)/fsck.ext4.8 \
- $(DESTDIR)$(man8dir)/fsck.ext4dev.8
+ $(DESTDIR)$(man8dir)/fsck.ext4.8

for i in $(UMANPAGES); do \
$(RM) -f $(DESTDIR)$(man1dir)/$$i; \
diff --git a/misc/fsck.c b/misc/fsck.c
index 826aaeb..2df15cd 100644
--- a/misc/fsck.c
+++ b/misc/fsck.c
@@ -84,7 +84,6 @@ static const char *really_wanted[] = {
"ext2",
"ext3",
"ext4",
- "ext4dev",
"jfs",
"reiserfs",
"xiafs",
@@ -455,8 +454,7 @@ static int execute(const char *type, const char *device, const char *mntpt,
if (progress) {
if ((strcmp(type, "ext2") == 0) ||
(strcmp(type, "ext3") == 0) ||
- (strcmp(type, "ext4") == 0) ||
- (strcmp(type, "ext4dev") == 0)) {
+ (strcmp(type, "ext4") == 0)) {
char tmp[80];

tmp[0] = 0;
@@ -632,8 +630,7 @@ static struct fsck_instance *wait_one(int flags)
continue;
if (strcmp(inst2->type, "ext2") &&
strcmp(inst2->type, "ext3") &&
- strcmp(inst2->type, "ext4") &&
- strcmp(inst2->type, "ext4dev"))
+ strcmp(inst2->type, "ext4"))
continue;
/*
* If we've just started the fsck, wait a tiny
diff --git a/misc/mke2fs.8.in b/misc/mke2fs.8.in
index 9c38e20..9015770 100644
--- a/misc/mke2fs.8.in
+++ b/misc/mke2fs.8.in
@@ -299,10 +299,6 @@ The \fBroot_owner=\fR option allows explicitly specifying these values,
and avoid side-effects for users that do not expect the contents of the
filesystem to change based on the user running \fBmke2fs\fR.
.TP
-.B test_fs
-Set a flag in the filesystem superblock indicating that it may be
-mounted using experimental kernel code, such as the ext4dev filesystem.
-.TP
.BI discard
Attempt to discard blocks at mkfs time (discarding blocks initially is useful
on solid state devices and sparse / thin-provisioned storage). When the device
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index facbe4c..44d1a60 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -952,8 +952,6 @@ static void parse_extended_opts(struct ext2_super_block *param,

param->s_reserved_gdt_blocks = rsv_gdb;
}
- } else if (!strcmp(token, "test_fs")) {
- param->s_flags |= EXT2_FLAGS_TEST_FILESYS;
} else if (!strcmp(token, "lazy_itable_init")) {
if (arg)
lazy_itable_init = strtoul(arg, &p, 0);
@@ -1031,7 +1029,6 @@ static void parse_extended_opts(struct ext2_super_block *param,
"\tlazy_journal_init=<0 to disable, 1 to enable>\n"
"\troot_uid=<uid of root directory>\n"
"\troot_gid=<gid of root directory>\n"
- "\ttest_fs\n"
"\tdiscard\n"
"\tnodiscard\n"
"\tquotatype=<usr OR grp>\n\n"),
@@ -1244,8 +1241,7 @@ static char **parse_fs_type(const char *fs_type,
strcmp(ext_type, "ext2")) {
printf(_("\nYour mke2fs.conf file does not define the "
"%s filesystem type.\n"), ext_type);
- if (!strcmp(ext_type, "ext3") || !strcmp(ext_type, "ext4") ||
- !strcmp(ext_type, "ext4dev")) {
+ if (!strcmp(ext_type, "ext3") || !strcmp(ext_type, "ext4")) {
printf("%s", _("You probably need to install an "
"updated mke2fs.conf file.\n\n"));
}
@@ -2670,9 +2666,6 @@ int main (int argc, char *argv[])
io_channel_set_options(fs->io, opt_string);
}

- if (fs_param.s_flags & EXT2_FLAGS_TEST_FILESYS)
- fs->super->s_flags |= EXT2_FLAGS_TEST_FILESYS;
-
if ((fs_param.s_feature_incompat &
(EXT3_FEATURE_INCOMPAT_EXTENTS|EXT4_FEATURE_INCOMPAT_FLEX_BG)) ||
(fs_param.s_feature_ro_compat &
diff --git a/misc/mke2fs.conf.in b/misc/mke2fs.conf.in
index 178733f..980bf9c 100644
--- a/misc/mke2fs.conf.in
+++ b/misc/mke2fs.conf.in
@@ -15,11 +15,6 @@
auto_64-bit_support = 1
inode_size = 256
}
- ext4dev = {
- features = has_journal,extent,huge_file,flex_bg,metadata_csum,64bit,dir_nlink,extra_isize
- inode_size = 256
- options = test_fs=1
- }
small = {
blocksize = 1024
inode_size = 128
diff --git a/misc/tune2fs.8.in b/misc/tune2fs.8.in
index 9455707..c1c64e7 100644
--- a/misc/tune2fs.8.in
+++ b/misc/tune2fs.8.in
@@ -231,14 +231,6 @@ program.
.IP
This superblock setting is only honored in 2.6.35+ kernels;
and not at all by the ext2 and ext3 file system drivers.
-.TP
-.B test_fs
-Set a flag in the filesystem superblock indicating that it may be
-mounted using experimental kernel code, such as the ext4dev filesystem.
-.TP
-.B ^test_fs
-Clear the test_fs flag, indicating the filesystem should only be mounted
-using production-level filesystem code.
.RE
.TP
.B \-f
diff --git a/misc/tune2fs.c b/misc/tune2fs.c
index 8ff47d2..5bc38cb 100644
--- a/misc/tune2fs.c
+++ b/misc/tune2fs.c
@@ -1735,14 +1735,6 @@ static int parse_extended_opts(ext2_filsys fs, const char *opts)
intv);
fs->super->s_mmp_update_interval = intv;
ext2fs_mark_super_dirty(fs);
- } else if (!strcmp(token, "test_fs")) {
- fs->super->s_flags |= EXT2_FLAGS_TEST_FILESYS;
- printf("Setting test filesystem flag\n");
- ext2fs_mark_super_dirty(fs);
- } else if (!strcmp(token, "^test_fs")) {
- fs->super->s_flags &= ~EXT2_FLAGS_TEST_FILESYS;
- printf("Clearing test filesystem flag\n");
- ext2fs_mark_super_dirty(fs);
} else if (strcmp(token, "stride") == 0) {
if (!arg) {
r_usage++;
@@ -1815,9 +1807,7 @@ static int parse_extended_opts(ext2_filsys fs, const char *opts)
"\thash_alg=<hash algorithm>\n"
"\tmount_opts=<extended default mount options>\n"
"\tstride=<RAID per-disk chunk size in blocks>\n"
- "\tstripe_width=<RAID stride*data disks in blocks>\n"
- "\ttest_fs\n"
- "\t^test_fs\n"));
+ "\tstripe_width=<RAID stride*data disks in blocks>\n"));
free(buf);
return 1;
}
diff --git a/tests/mke2fs.conf.in b/tests/mke2fs.conf.in
index c06050d..ee246ba 100644
--- a/tests/mke2fs.conf.in
+++ b/tests/mke2fs.conf.in
@@ -17,11 +17,6 @@
features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
inode_size = 256
}
- ext4dev = {
- features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
- inode_size = 256
- options = test_fs=1
- }
small = {
blocksize = 1024
inode_size = 128
--
1.8.3.1



2014-02-19 16:56:40

by Eric Sandeen

[permalink] [raw]
Subject: Re: [PATCH] e2fsprogs: Remove any occurrence of ext4dev and test_fs

On 2/19/14, 8:57 AM, Lukas Czerner wrote:
> ext4dev is no longer supported by kernel so we really need to get rid of
> it entirely from e2fsprogs.
>
> This patch removes any occurrence of ext4dev and test_fs flag from the
> e2fsprogs tools with one exception. Out of paranoia we can still leave
> the possibility to remove test_fs flag (EXT2_FLAGS_TEST_FILESYS) from
> the file system using e2fsck by specifying clear_test_fs_flag option in
> the e2fsck.config file.

Yes, I think this makes good sense. While one could argue that
test_fs may be used for some other purpose in the future, we have
added a lot of fairly experimental code without making use of it,
so I'd argue that it has no practical use going forward.

Acked-by: Eric Sandeen <[email protected]>

> Signed-off-by: Lukas Czerner <[email protected]>
> ---
> e2fsck/Makefile.in | 10 +++----
> e2fsprogs.spec.in | 4 ---
> lib/blkid/probe.c | 80 ++--------------------------------------------------
> misc/Makefile.in | 32 ++++++---------------
> misc/fsck.c | 7 ++---
> misc/mke2fs.8.in | 4 ---
> misc/mke2fs.c | 9 +-----
> misc/mke2fs.conf.in | 5 ----
> misc/tune2fs.8.in | 8 ------
> misc/tune2fs.c | 12 +-------
> tests/mke2fs.conf.in | 5 ----
> 11 files changed, 20 insertions(+), 156 deletions(-)
>
> diff --git a/e2fsck/Makefile.in b/e2fsck/Makefile.in
> index 8ca329b..441485b 100644
> --- a/e2fsck/Makefile.in
> +++ b/e2fsck/Makefile.in
> @@ -207,7 +207,7 @@ install: $(PROGS) $(MANPAGES) $(FMANPAGES) installdirs
> $(ES) " INSTALL $(root_sbindir)/$$i"; \
> $(INSTALL_PROGRAM) $$i $(DESTDIR)$(root_sbindir)/$$i; \
> done
> - $(Q) for i in ext2 ext3 ext4 ext4dev; do \
> + $(Q) for i in ext2 ext3 ext4; do \
> $(ES) " LINK $(root_sbindir)/fsck.$$i"; \
> (cd $(DESTDIR)$(root_sbindir); \
> $(LN) $(LINK_INSTALL_FLAGS) e2fsck fsck.$$i); \
> @@ -226,7 +226,7 @@ install: $(PROGS) $(MANPAGES) $(FMANPAGES) installdirs
> $(ES) " INSTALL_DATA $(man5dir)/$$i"; \
> $(INSTALL_DATA) $$i $(DESTDIR)$(man5dir)/$$i; \
> done
> - $(Q) for i in ext2 ext3 ext4 ext4dev; do \
> + $(Q) for i in ext2 ext3 ext4; do \
> $(ES) " LINK $(man8dir)/fsck.$$i.8"; \
> (cd $(DESTDIR)$(man8dir); \
> $(LN) $(LINK_INSTALL_FLAGS) e2fsck.8 fsck.$$i.8); \
> @@ -244,8 +244,7 @@ uninstall:
> done
> $(RM) -f $(DESTDIR)$(root_sbindir)/fsck.ext2 \
> $(DESTDIR)$(root_sbindir)/fsck.ext3 \
> - $(DESTDIR)$(root_sbindir)/fsck.ext4 \
> - $(DESTDIR)$(root_sbindir)/fsck.ext4dev
> + $(DESTDIR)$(root_sbindir)/fsck.ext4
> for i in $(MANPAGES); do \
> $(RM) -f $(DESTDIR)$(man8dir)/$$i; \
> done
> @@ -254,8 +253,7 @@ uninstall:
> done
> $(RM) -f $(DESTDIR)$(root_sbindir)/fsck.ext2 \
> $(DESTDIR)$(root_sbindir)/fsck.ext3 \
> - $(DESTDIR)$(root_sbindir)/fsck.ext4 \
> - $(DESTDIR)$(root_sbindir)/fsck.ext4dev
> + $(DESTDIR)$(root_sbindir)/fsck.ext4
>
> clean:
> $(RM) -f $(PROGS) \#* *\# *.s *.o *.a *~ core e2fsck.static \
> diff --git a/e2fsprogs.spec.in b/e2fsprogs.spec.in
> index b188b75..c739e63 100644
> --- a/e2fsprogs.spec.in
> +++ b/e2fsprogs.spec.in
> @@ -122,14 +122,12 @@ exit 0
> %{_root_sbindir}/fsck.ext2
> %{_root_sbindir}/fsck.ext3
> %{_root_sbindir}/fsck.ext4
> -%{_root_sbindir}/fsck.ext4dev
> %{_root_sbindir}/logsave
> %{_root_sbindir}/mke2fs
> %{_root_etcdir}/mke2fs.conf
> %{_root_sbindir}/mkfs.ext2
> %{_root_sbindir}/mkfs.ext3
> %{_root_sbindir}/mkfs.ext4
> -%{_root_sbindir}/mkfs.ext4dev
> %{_root_sbindir}/resize2fs
> %{_root_sbindir}/tune2fs
> %{_sbindir}/filefrag
> @@ -164,7 +162,6 @@ exit 0
> %{_mandir}/man8/fsck.ext2.8*
> %{_mandir}/man8/fsck.ext3.8*
> %{_mandir}/man8/fsck.ext4.8*
> -%{_mandir}/man8/fsck.ext4dev.8*
> %{_mandir}/man8/e2image.8*
> %{_mandir}/man8/e2label.8*
> %{_mandir}/man8/e2undo.8*
> @@ -174,7 +171,6 @@ exit 0
> %{_mandir}/man8/mkfs.ext2.8*
> %{_mandir}/man8/mkfs.ext3.8*
> %{_mandir}/man8/mkfs.ext4.8*
> -%{_mandir}/man8/mkfs.ext4dev.8*
> %{_mandir}/man8/mklost+found.8*
> %{_mandir}/man8/resize2fs.8*
> %{_mandir}/man8/tune2fs.8*
> diff --git a/lib/blkid/probe.c b/lib/blkid/probe.c
> index 4b797ab..2877fdf 100644
> --- a/lib/blkid/probe.c
> +++ b/lib/blkid/probe.c
> @@ -305,64 +305,6 @@ static int system_supports_ext4(void)
> return ret;
> }
>
> -static int system_supports_ext4dev(void)
> -{
> - static time_t last_check = 0;
> - static int ret = -1;
> - time_t now = time(0);
> -
> - if (ret != -1 || (now - last_check) < 5)
> - return ret;
> - last_check = now;
> - ret = (fs_proc_check("ext4dev") || check_for_modules("ext4dev"));
> - return ret;
> -}
> -
> -static int probe_ext4dev(struct blkid_probe *probe,
> - struct blkid_magic *id,
> - unsigned char *buf)
> -{
> - struct ext2_super_block *es;
> - es = (struct ext2_super_block *)buf;
> -
> - /* Distinguish from jbd */
> - if (blkid_le32(es->s_feature_incompat) &
> - EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)
> - return -BLKID_ERR_PARAM;
> -
> - /*
> - * If the filesystem does not have a journal and ext2 and ext4
> - * is not present, then force this to be detected as an
> - * ext4dev filesystem.
> - */
> - if (!(blkid_le32(es->s_feature_compat) &
> - EXT3_FEATURE_COMPAT_HAS_JOURNAL) &&
> - !system_supports_ext2() && !system_supports_ext4() &&
> - system_supports_ext4dev() &&
> - linux_version_code() >= EXT4_SUPPORTS_EXT2)
> - goto force_ext4dev;
> -
> - /*
> - * If the filesystem is marked as OK for use by in-development
> - * filesystem code, but ext4dev is not supported, and ext4 is,
> - * then don't call ourselves ext4dev, since we should be
> - * detected as ext4 in that case.
> - *
> - * If the filesystem is marked as in use by production
> - * filesystem, then it can only be used by ext4 and NOT by
> - * ext4dev, so always disclaim we are ext4dev in that case.
> - */
> - if (blkid_le32(es->s_flags) & EXT2_FLAGS_TEST_FILESYS) {
> - if (!system_supports_ext4dev() && system_supports_ext4())
> - return -BLKID_ERR_PARAM;
> - } else
> - return -BLKID_ERR_PARAM;
> -
> -force_ext4dev:
> - get_ext2_info(probe->dev, id, buf);
> - return 0;
> -}
> -
> static int probe_ext4(struct blkid_probe *probe, struct blkid_magic *id,
> unsigned char *buf)
> {
> @@ -393,21 +335,7 @@ static int probe_ext4(struct blkid_probe *probe, struct blkid_magic *id,
> return -BLKID_ERR_PARAM;
>
> force_ext4:
> - /*
> - * If the filesystem is a OK for use by in-development
> - * filesystem code, and ext4dev is supported or ext4 is not
> - * supported, then don't call ourselves ext4, so we can redo
> - * the detection and mark the filesystem as ext4dev.
> - *
> - * If the filesystem is marked as in use by production
> - * filesystem, then it can only be used by ext4 and NOT by
> - * ext4dev.
> - */
> - if (blkid_le32(es->s_flags) & EXT2_FLAGS_TEST_FILESYS) {
> - if (system_supports_ext4dev() || !system_supports_ext4())
> - return -BLKID_ERR_PARAM;
> - }
> - get_ext2_info(probe->dev, id, buf);
> + get_ext2_info(probe->dev, id, buf);
> return 0;
> }
>
> @@ -453,11 +381,10 @@ static int probe_ext2(struct blkid_probe *probe, struct blkid_magic *id,
> return -BLKID_ERR_PARAM;
>
> /*
> - * If ext2 is not present, but ext4 or ext4dev are, then
> + * If ext2 is not present, but ext4 is, then
> * disclaim we are ext2
> */
> - if (!system_supports_ext2() &&
> - (system_supports_ext4() || system_supports_ext4dev()) &&
> + if (!system_supports_ext2() && system_supports_ext4() &&
> linux_version_code() >= EXT4_SUPPORTS_EXT2)
> return -BLKID_ERR_PARAM;
>
> @@ -1400,7 +1327,6 @@ static struct blkid_magic type_array[] = {
> { "oracleasm", 0, 32, 8, "ORCLDISK", probe_oracleasm },
> { "ntfs", 0, 3, 8, "NTFS ", probe_ntfs },
> { "jbd", 1, 0x38, 2, "\123\357", probe_jbd },
> - { "ext4dev", 1, 0x38, 2, "\123\357", probe_ext4dev },
> { "ext4", 1, 0x38, 2, "\123\357", probe_ext4 },
> { "ext3", 1, 0x38, 2, "\123\357", probe_ext3 },
> { "ext2", 1, 0x38, 2, "\123\357", probe_ext2 },
> diff --git a/misc/Makefile.in b/misc/Makefile.in
> index e8cfdb5..90986f6 100644
> --- a/misc/Makefile.in
> +++ b/misc/Makefile.in
> @@ -461,7 +461,7 @@ install: all $(SMANPAGES) $(UMANPAGES) installdirs
> $(ES) " INSTALL $(sbindir)/$$i"; \
> $(INSTALL_PROGRAM) $$i $(DESTDIR)$(sbindir)/$$i; \
> done
> - $(Q) for i in ext2 ext3 ext4 ext4dev; do \
> + $(Q) for i in ext2 ext3 ext4; do \
> $(ES) " LINK $(root_sbindir)/mkfs.$$i"; \
> (cd $(DESTDIR)$(root_sbindir); \
> $(LN) $(LINK_INSTALL_FLAGS) mke2fs mkfs.$$i); \
> @@ -490,7 +490,7 @@ install: all $(SMANPAGES) $(UMANPAGES) installdirs
> done
> $(Q) $(RM) -f $(DESTDIR)$(man8dir)/mkfs.ext2.8.gz \
> $(DESTDIR)$(man8dir)/mkfs.ext3.8.gz
> - $(Q) for i in ext2 ext3 ext4 ext4dev; do \
> + $(Q) for i in ext2 ext3 ext4; do \
> $(ES) " LINK mkfs.$$i.8"; \
> (cd $(DESTDIR)$(man8dir); \
> $(LN) $(LINK_INSTALL_FLAGS) mke2fs.8 mkfs.$$i.8); \
> @@ -519,22 +519,11 @@ install: all $(SMANPAGES) $(UMANPAGES) installdirs
> mke2fs.conf; then \
> true; \
> else \
> - if grep -q ext4dev $(DESTDIR)$(root_sysconfdir)/mke2fs.conf ; then \
> - $(ES) " INSTALL_DATA $(root_sysconfdir)/mke2fs.conf.e2fsprogs-new"; \
> - $(INSTALL_DATA) mke2fs.conf \
> - $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-new; \
> - echo "Warning: installing mke2fs.conf in $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-new"; \
> - echo "Check to see if you need to update your $(root_sysconfdir)/mke2fs.conf"; \
> - else \
> - $(ES) " INSTALL_DATA $(root_sysconfdir)/mke2fs.conf"; \
> - mv $(DESTDIR)$(root_sysconfdir)/mke2fs.conf \
> - $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-old; \
> - $(INSTALL_DATA) mke2fs.conf \
> - $(DESTDIR)$(root_sysconfdir)/mke2fs.conf; \
> - echo "Your mke2fs.conf is too old. Backing up old version in"; \
> - echo "$(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-old. Please check to see"; \
> - echo "if you have any local customizations that you wish to preserve."; \
> - fi; \
> + $(ES) " INSTALL_DATA $(root_sysconfdir)/mke2fs.conf.e2fsprogs-new"; \
> + $(INSTALL_DATA) mke2fs.conf \
> + $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-new; \
> + echo "Warning: installing mke2fs.conf in $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-new"; \
> + echo "Check to see if you need to update your $(root_sysconfdir)/mke2fs.conf"; \
> echo " "; \
> fi; \
> else \
> @@ -565,8 +554,7 @@ uninstall:
> done
> $(RM) -f $(DESTDIR)$(root_sbindir)/mkfs.ext2 \
> $(DESTDIR)$(root_sbindir)/mkfs.ext3 \
> - $(DESTDIR)$(root_sbindir)/mkfs.ext4 \
> - $(DESTDIR)$(root_sbindir)/mkfs.ext4dev
> + $(DESTDIR)$(root_sbindir)/mkfs.ext4
> for i in $(UPROGS); do \
> $(RM) -f $(DESTDIR)$(bindir)/$$i; \
> done
> @@ -576,11 +564,9 @@ uninstall:
> $(RM) -f $(DESTDIR)$(man8dir)/mkfs.ext2.8 \
> $(DESTDIR)$(man8dir)/mkfs.ext3.8 \
> $(DESTDIR)$(man8dir)/mkfs.ext4.8 \
> - $(DESTDIR)$(man8dir)/mkfs.ext4dev.8 \
> $(DESTDIR)$(man8dir)/fsck.ext2.8 \
> $(DESTDIR)$(man8dir)/fsck.ext3.8 \
> - $(DESTDIR)$(man8dir)/fsck.ext4.8 \
> - $(DESTDIR)$(man8dir)/fsck.ext4dev.8
> + $(DESTDIR)$(man8dir)/fsck.ext4.8
>
> for i in $(UMANPAGES); do \
> $(RM) -f $(DESTDIR)$(man1dir)/$$i; \
> diff --git a/misc/fsck.c b/misc/fsck.c
> index 826aaeb..2df15cd 100644
> --- a/misc/fsck.c
> +++ b/misc/fsck.c
> @@ -84,7 +84,6 @@ static const char *really_wanted[] = {
> "ext2",
> "ext3",
> "ext4",
> - "ext4dev",
> "jfs",
> "reiserfs",
> "xiafs",
> @@ -455,8 +454,7 @@ static int execute(const char *type, const char *device, const char *mntpt,
> if (progress) {
> if ((strcmp(type, "ext2") == 0) ||
> (strcmp(type, "ext3") == 0) ||
> - (strcmp(type, "ext4") == 0) ||
> - (strcmp(type, "ext4dev") == 0)) {
> + (strcmp(type, "ext4") == 0)) {
> char tmp[80];
>
> tmp[0] = 0;
> @@ -632,8 +630,7 @@ static struct fsck_instance *wait_one(int flags)
> continue;
> if (strcmp(inst2->type, "ext2") &&
> strcmp(inst2->type, "ext3") &&
> - strcmp(inst2->type, "ext4") &&
> - strcmp(inst2->type, "ext4dev"))
> + strcmp(inst2->type, "ext4"))
> continue;
> /*
> * If we've just started the fsck, wait a tiny
> diff --git a/misc/mke2fs.8.in b/misc/mke2fs.8.in
> index 9c38e20..9015770 100644
> --- a/misc/mke2fs.8.in
> +++ b/misc/mke2fs.8.in
> @@ -299,10 +299,6 @@ The \fBroot_owner=\fR option allows explicitly specifying these values,
> and avoid side-effects for users that do not expect the contents of the
> filesystem to change based on the user running \fBmke2fs\fR.
> .TP
> -.B test_fs
> -Set a flag in the filesystem superblock indicating that it may be
> -mounted using experimental kernel code, such as the ext4dev filesystem.
> -.TP
> .BI discard
> Attempt to discard blocks at mkfs time (discarding blocks initially is useful
> on solid state devices and sparse / thin-provisioned storage). When the device
> diff --git a/misc/mke2fs.c b/misc/mke2fs.c
> index facbe4c..44d1a60 100644
> --- a/misc/mke2fs.c
> +++ b/misc/mke2fs.c
> @@ -952,8 +952,6 @@ static void parse_extended_opts(struct ext2_super_block *param,
>
> param->s_reserved_gdt_blocks = rsv_gdb;
> }
> - } else if (!strcmp(token, "test_fs")) {
> - param->s_flags |= EXT2_FLAGS_TEST_FILESYS;
> } else if (!strcmp(token, "lazy_itable_init")) {
> if (arg)
> lazy_itable_init = strtoul(arg, &p, 0);
> @@ -1031,7 +1029,6 @@ static void parse_extended_opts(struct ext2_super_block *param,
> "\tlazy_journal_init=<0 to disable, 1 to enable>\n"
> "\troot_uid=<uid of root directory>\n"
> "\troot_gid=<gid of root directory>\n"
> - "\ttest_fs\n"
> "\tdiscard\n"
> "\tnodiscard\n"
> "\tquotatype=<usr OR grp>\n\n"),
> @@ -1244,8 +1241,7 @@ static char **parse_fs_type(const char *fs_type,
> strcmp(ext_type, "ext2")) {
> printf(_("\nYour mke2fs.conf file does not define the "
> "%s filesystem type.\n"), ext_type);
> - if (!strcmp(ext_type, "ext3") || !strcmp(ext_type, "ext4") ||
> - !strcmp(ext_type, "ext4dev")) {
> + if (!strcmp(ext_type, "ext3") || !strcmp(ext_type, "ext4")) {
> printf("%s", _("You probably need to install an "
> "updated mke2fs.conf file.\n\n"));
> }
> @@ -2670,9 +2666,6 @@ int main (int argc, char *argv[])
> io_channel_set_options(fs->io, opt_string);
> }
>
> - if (fs_param.s_flags & EXT2_FLAGS_TEST_FILESYS)
> - fs->super->s_flags |= EXT2_FLAGS_TEST_FILESYS;
> -
> if ((fs_param.s_feature_incompat &
> (EXT3_FEATURE_INCOMPAT_EXTENTS|EXT4_FEATURE_INCOMPAT_FLEX_BG)) ||
> (fs_param.s_feature_ro_compat &
> diff --git a/misc/mke2fs.conf.in b/misc/mke2fs.conf.in
> index 178733f..980bf9c 100644
> --- a/misc/mke2fs.conf.in
> +++ b/misc/mke2fs.conf.in
> @@ -15,11 +15,6 @@
> auto_64-bit_support = 1
> inode_size = 256
> }
> - ext4dev = {
> - features = has_journal,extent,huge_file,flex_bg,metadata_csum,64bit,dir_nlink,extra_isize
> - inode_size = 256
> - options = test_fs=1
> - }
> small = {
> blocksize = 1024
> inode_size = 128
> diff --git a/misc/tune2fs.8.in b/misc/tune2fs.8.in
> index 9455707..c1c64e7 100644
> --- a/misc/tune2fs.8.in
> +++ b/misc/tune2fs.8.in
> @@ -231,14 +231,6 @@ program.
> .IP
> This superblock setting is only honored in 2.6.35+ kernels;
> and not at all by the ext2 and ext3 file system drivers.
> -.TP
> -.B test_fs
> -Set a flag in the filesystem superblock indicating that it may be
> -mounted using experimental kernel code, such as the ext4dev filesystem.
> -.TP
> -.B ^test_fs
> -Clear the test_fs flag, indicating the filesystem should only be mounted
> -using production-level filesystem code.
> .RE
> .TP
> .B \-f
> diff --git a/misc/tune2fs.c b/misc/tune2fs.c
> index 8ff47d2..5bc38cb 100644
> --- a/misc/tune2fs.c
> +++ b/misc/tune2fs.c
> @@ -1735,14 +1735,6 @@ static int parse_extended_opts(ext2_filsys fs, const char *opts)
> intv);
> fs->super->s_mmp_update_interval = intv;
> ext2fs_mark_super_dirty(fs);
> - } else if (!strcmp(token, "test_fs")) {
> - fs->super->s_flags |= EXT2_FLAGS_TEST_FILESYS;
> - printf("Setting test filesystem flag\n");
> - ext2fs_mark_super_dirty(fs);
> - } else if (!strcmp(token, "^test_fs")) {
> - fs->super->s_flags &= ~EXT2_FLAGS_TEST_FILESYS;
> - printf("Clearing test filesystem flag\n");
> - ext2fs_mark_super_dirty(fs);
> } else if (strcmp(token, "stride") == 0) {
> if (!arg) {
> r_usage++;
> @@ -1815,9 +1807,7 @@ static int parse_extended_opts(ext2_filsys fs, const char *opts)
> "\thash_alg=<hash algorithm>\n"
> "\tmount_opts=<extended default mount options>\n"
> "\tstride=<RAID per-disk chunk size in blocks>\n"
> - "\tstripe_width=<RAID stride*data disks in blocks>\n"
> - "\ttest_fs\n"
> - "\t^test_fs\n"));
> + "\tstripe_width=<RAID stride*data disks in blocks>\n"));
> free(buf);
> return 1;
> }
> diff --git a/tests/mke2fs.conf.in b/tests/mke2fs.conf.in
> index c06050d..ee246ba 100644
> --- a/tests/mke2fs.conf.in
> +++ b/tests/mke2fs.conf.in
> @@ -17,11 +17,6 @@
> features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
> inode_size = 256
> }
> - ext4dev = {
> - features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
> - inode_size = 256
> - options = test_fs=1
> - }
> small = {
> blocksize = 1024
> inode_size = 128
>


2014-03-03 12:55:13

by Lukas Czerner

[permalink] [raw]
Subject: Re: [PATCH] e2fsprogs: Remove any occurrence of ext4dev and test_fs

On Wed, 19 Feb 2014, Eric Sandeen wrote:

> Date: Wed, 19 Feb 2014 10:56:35 -0600
> From: Eric Sandeen <[email protected]>
> To: Lukas Czerner <[email protected]>, [email protected]
> Cc: [email protected]
> Subject: Re: [PATCH] e2fsprogs: Remove any occurrence of ext4dev and test_fs
>
> On 2/19/14, 8:57 AM, Lukas Czerner wrote:
> > ext4dev is no longer supported by kernel so we really need to get rid of
> > it entirely from e2fsprogs.
> >
> > This patch removes any occurrence of ext4dev and test_fs flag from the
> > e2fsprogs tools with one exception. Out of paranoia we can still leave
> > the possibility to remove test_fs flag (EXT2_FLAGS_TEST_FILESYS) from
> > the file system using e2fsck by specifying clear_test_fs_flag option in
> > the e2fsck.config file.
>
> Yes, I think this makes good sense. While one could argue that
> test_fs may be used for some other purpose in the future, we have
> added a lot of fairly experimental code without making use of it,
> so I'd argue that it has no practical use going forward.
>
> Acked-by: Eric Sandeen <[email protected]>

Hi Ted,

are you planning to take this in ?

Thanks!
-Lukas

>
> > Signed-off-by: Lukas Czerner <[email protected]>
> > ---
> > e2fsck/Makefile.in | 10 +++----
> > e2fsprogs.spec.in | 4 ---
> > lib/blkid/probe.c | 80 ++--------------------------------------------------
> > misc/Makefile.in | 32 ++++++---------------
> > misc/fsck.c | 7 ++---
> > misc/mke2fs.8.in | 4 ---
> > misc/mke2fs.c | 9 +-----
> > misc/mke2fs.conf.in | 5 ----
> > misc/tune2fs.8.in | 8 ------
> > misc/tune2fs.c | 12 +-------
> > tests/mke2fs.conf.in | 5 ----
> > 11 files changed, 20 insertions(+), 156 deletions(-)
> >
> > diff --git a/e2fsck/Makefile.in b/e2fsck/Makefile.in
> > index 8ca329b..441485b 100644
> > --- a/e2fsck/Makefile.in
> > +++ b/e2fsck/Makefile.in
> > @@ -207,7 +207,7 @@ install: $(PROGS) $(MANPAGES) $(FMANPAGES) installdirs
> > $(ES) " INSTALL $(root_sbindir)/$$i"; \
> > $(INSTALL_PROGRAM) $$i $(DESTDIR)$(root_sbindir)/$$i; \
> > done
> > - $(Q) for i in ext2 ext3 ext4 ext4dev; do \
> > + $(Q) for i in ext2 ext3 ext4; do \
> > $(ES) " LINK $(root_sbindir)/fsck.$$i"; \
> > (cd $(DESTDIR)$(root_sbindir); \
> > $(LN) $(LINK_INSTALL_FLAGS) e2fsck fsck.$$i); \
> > @@ -226,7 +226,7 @@ install: $(PROGS) $(MANPAGES) $(FMANPAGES) installdirs
> > $(ES) " INSTALL_DATA $(man5dir)/$$i"; \
> > $(INSTALL_DATA) $$i $(DESTDIR)$(man5dir)/$$i; \
> > done
> > - $(Q) for i in ext2 ext3 ext4 ext4dev; do \
> > + $(Q) for i in ext2 ext3 ext4; do \
> > $(ES) " LINK $(man8dir)/fsck.$$i.8"; \
> > (cd $(DESTDIR)$(man8dir); \
> > $(LN) $(LINK_INSTALL_FLAGS) e2fsck.8 fsck.$$i.8); \
> > @@ -244,8 +244,7 @@ uninstall:
> > done
> > $(RM) -f $(DESTDIR)$(root_sbindir)/fsck.ext2 \
> > $(DESTDIR)$(root_sbindir)/fsck.ext3 \
> > - $(DESTDIR)$(root_sbindir)/fsck.ext4 \
> > - $(DESTDIR)$(root_sbindir)/fsck.ext4dev
> > + $(DESTDIR)$(root_sbindir)/fsck.ext4
> > for i in $(MANPAGES); do \
> > $(RM) -f $(DESTDIR)$(man8dir)/$$i; \
> > done
> > @@ -254,8 +253,7 @@ uninstall:
> > done
> > $(RM) -f $(DESTDIR)$(root_sbindir)/fsck.ext2 \
> > $(DESTDIR)$(root_sbindir)/fsck.ext3 \
> > - $(DESTDIR)$(root_sbindir)/fsck.ext4 \
> > - $(DESTDIR)$(root_sbindir)/fsck.ext4dev
> > + $(DESTDIR)$(root_sbindir)/fsck.ext4
> >
> > clean:
> > $(RM) -f $(PROGS) \#* *\# *.s *.o *.a *~ core e2fsck.static \
> > diff --git a/e2fsprogs.spec.in b/e2fsprogs.spec.in
> > index b188b75..c739e63 100644
> > --- a/e2fsprogs.spec.in
> > +++ b/e2fsprogs.spec.in
> > @@ -122,14 +122,12 @@ exit 0
> > %{_root_sbindir}/fsck.ext2
> > %{_root_sbindir}/fsck.ext3
> > %{_root_sbindir}/fsck.ext4
> > -%{_root_sbindir}/fsck.ext4dev
> > %{_root_sbindir}/logsave
> > %{_root_sbindir}/mke2fs
> > %{_root_etcdir}/mke2fs.conf
> > %{_root_sbindir}/mkfs.ext2
> > %{_root_sbindir}/mkfs.ext3
> > %{_root_sbindir}/mkfs.ext4
> > -%{_root_sbindir}/mkfs.ext4dev
> > %{_root_sbindir}/resize2fs
> > %{_root_sbindir}/tune2fs
> > %{_sbindir}/filefrag
> > @@ -164,7 +162,6 @@ exit 0
> > %{_mandir}/man8/fsck.ext2.8*
> > %{_mandir}/man8/fsck.ext3.8*
> > %{_mandir}/man8/fsck.ext4.8*
> > -%{_mandir}/man8/fsck.ext4dev.8*
> > %{_mandir}/man8/e2image.8*
> > %{_mandir}/man8/e2label.8*
> > %{_mandir}/man8/e2undo.8*
> > @@ -174,7 +171,6 @@ exit 0
> > %{_mandir}/man8/mkfs.ext2.8*
> > %{_mandir}/man8/mkfs.ext3.8*
> > %{_mandir}/man8/mkfs.ext4.8*
> > -%{_mandir}/man8/mkfs.ext4dev.8*
> > %{_mandir}/man8/mklost+found.8*
> > %{_mandir}/man8/resize2fs.8*
> > %{_mandir}/man8/tune2fs.8*
> > diff --git a/lib/blkid/probe.c b/lib/blkid/probe.c
> > index 4b797ab..2877fdf 100644
> > --- a/lib/blkid/probe.c
> > +++ b/lib/blkid/probe.c
> > @@ -305,64 +305,6 @@ static int system_supports_ext4(void)
> > return ret;
> > }
> >
> > -static int system_supports_ext4dev(void)
> > -{
> > - static time_t last_check = 0;
> > - static int ret = -1;
> > - time_t now = time(0);
> > -
> > - if (ret != -1 || (now - last_check) < 5)
> > - return ret;
> > - last_check = now;
> > - ret = (fs_proc_check("ext4dev") || check_for_modules("ext4dev"));
> > - return ret;
> > -}
> > -
> > -static int probe_ext4dev(struct blkid_probe *probe,
> > - struct blkid_magic *id,
> > - unsigned char *buf)
> > -{
> > - struct ext2_super_block *es;
> > - es = (struct ext2_super_block *)buf;
> > -
> > - /* Distinguish from jbd */
> > - if (blkid_le32(es->s_feature_incompat) &
> > - EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)
> > - return -BLKID_ERR_PARAM;
> > -
> > - /*
> > - * If the filesystem does not have a journal and ext2 and ext4
> > - * is not present, then force this to be detected as an
> > - * ext4dev filesystem.
> > - */
> > - if (!(blkid_le32(es->s_feature_compat) &
> > - EXT3_FEATURE_COMPAT_HAS_JOURNAL) &&
> > - !system_supports_ext2() && !system_supports_ext4() &&
> > - system_supports_ext4dev() &&
> > - linux_version_code() >= EXT4_SUPPORTS_EXT2)
> > - goto force_ext4dev;
> > -
> > - /*
> > - * If the filesystem is marked as OK for use by in-development
> > - * filesystem code, but ext4dev is not supported, and ext4 is,
> > - * then don't call ourselves ext4dev, since we should be
> > - * detected as ext4 in that case.
> > - *
> > - * If the filesystem is marked as in use by production
> > - * filesystem, then it can only be used by ext4 and NOT by
> > - * ext4dev, so always disclaim we are ext4dev in that case.
> > - */
> > - if (blkid_le32(es->s_flags) & EXT2_FLAGS_TEST_FILESYS) {
> > - if (!system_supports_ext4dev() && system_supports_ext4())
> > - return -BLKID_ERR_PARAM;
> > - } else
> > - return -BLKID_ERR_PARAM;
> > -
> > -force_ext4dev:
> > - get_ext2_info(probe->dev, id, buf);
> > - return 0;
> > -}
> > -
> > static int probe_ext4(struct blkid_probe *probe, struct blkid_magic *id,
> > unsigned char *buf)
> > {
> > @@ -393,21 +335,7 @@ static int probe_ext4(struct blkid_probe *probe, struct blkid_magic *id,
> > return -BLKID_ERR_PARAM;
> >
> > force_ext4:
> > - /*
> > - * If the filesystem is a OK for use by in-development
> > - * filesystem code, and ext4dev is supported or ext4 is not
> > - * supported, then don't call ourselves ext4, so we can redo
> > - * the detection and mark the filesystem as ext4dev.
> > - *
> > - * If the filesystem is marked as in use by production
> > - * filesystem, then it can only be used by ext4 and NOT by
> > - * ext4dev.
> > - */
> > - if (blkid_le32(es->s_flags) & EXT2_FLAGS_TEST_FILESYS) {
> > - if (system_supports_ext4dev() || !system_supports_ext4())
> > - return -BLKID_ERR_PARAM;
> > - }
> > - get_ext2_info(probe->dev, id, buf);
> > + get_ext2_info(probe->dev, id, buf);
> > return 0;
> > }
> >
> > @@ -453,11 +381,10 @@ static int probe_ext2(struct blkid_probe *probe, struct blkid_magic *id,
> > return -BLKID_ERR_PARAM;
> >
> > /*
> > - * If ext2 is not present, but ext4 or ext4dev are, then
> > + * If ext2 is not present, but ext4 is, then
> > * disclaim we are ext2
> > */
> > - if (!system_supports_ext2() &&
> > - (system_supports_ext4() || system_supports_ext4dev()) &&
> > + if (!system_supports_ext2() && system_supports_ext4() &&
> > linux_version_code() >= EXT4_SUPPORTS_EXT2)
> > return -BLKID_ERR_PARAM;
> >
> > @@ -1400,7 +1327,6 @@ static struct blkid_magic type_array[] = {
> > { "oracleasm", 0, 32, 8, "ORCLDISK", probe_oracleasm },
> > { "ntfs", 0, 3, 8, "NTFS ", probe_ntfs },
> > { "jbd", 1, 0x38, 2, "\123\357", probe_jbd },
> > - { "ext4dev", 1, 0x38, 2, "\123\357", probe_ext4dev },
> > { "ext4", 1, 0x38, 2, "\123\357", probe_ext4 },
> > { "ext3", 1, 0x38, 2, "\123\357", probe_ext3 },
> > { "ext2", 1, 0x38, 2, "\123\357", probe_ext2 },
> > diff --git a/misc/Makefile.in b/misc/Makefile.in
> > index e8cfdb5..90986f6 100644
> > --- a/misc/Makefile.in
> > +++ b/misc/Makefile.in
> > @@ -461,7 +461,7 @@ install: all $(SMANPAGES) $(UMANPAGES) installdirs
> > $(ES) " INSTALL $(sbindir)/$$i"; \
> > $(INSTALL_PROGRAM) $$i $(DESTDIR)$(sbindir)/$$i; \
> > done
> > - $(Q) for i in ext2 ext3 ext4 ext4dev; do \
> > + $(Q) for i in ext2 ext3 ext4; do \
> > $(ES) " LINK $(root_sbindir)/mkfs.$$i"; \
> > (cd $(DESTDIR)$(root_sbindir); \
> > $(LN) $(LINK_INSTALL_FLAGS) mke2fs mkfs.$$i); \
> > @@ -490,7 +490,7 @@ install: all $(SMANPAGES) $(UMANPAGES) installdirs
> > done
> > $(Q) $(RM) -f $(DESTDIR)$(man8dir)/mkfs.ext2.8.gz \
> > $(DESTDIR)$(man8dir)/mkfs.ext3.8.gz
> > - $(Q) for i in ext2 ext3 ext4 ext4dev; do \
> > + $(Q) for i in ext2 ext3 ext4; do \
> > $(ES) " LINK mkfs.$$i.8"; \
> > (cd $(DESTDIR)$(man8dir); \
> > $(LN) $(LINK_INSTALL_FLAGS) mke2fs.8 mkfs.$$i.8); \
> > @@ -519,22 +519,11 @@ install: all $(SMANPAGES) $(UMANPAGES) installdirs
> > mke2fs.conf; then \
> > true; \
> > else \
> > - if grep -q ext4dev $(DESTDIR)$(root_sysconfdir)/mke2fs.conf ; then \
> > - $(ES) " INSTALL_DATA $(root_sysconfdir)/mke2fs.conf.e2fsprogs-new"; \
> > - $(INSTALL_DATA) mke2fs.conf \
> > - $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-new; \
> > - echo "Warning: installing mke2fs.conf in $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-new"; \
> > - echo "Check to see if you need to update your $(root_sysconfdir)/mke2fs.conf"; \
> > - else \
> > - $(ES) " INSTALL_DATA $(root_sysconfdir)/mke2fs.conf"; \
> > - mv $(DESTDIR)$(root_sysconfdir)/mke2fs.conf \
> > - $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-old; \
> > - $(INSTALL_DATA) mke2fs.conf \
> > - $(DESTDIR)$(root_sysconfdir)/mke2fs.conf; \
> > - echo "Your mke2fs.conf is too old. Backing up old version in"; \
> > - echo "$(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-old. Please check to see"; \
> > - echo "if you have any local customizations that you wish to preserve."; \
> > - fi; \
> > + $(ES) " INSTALL_DATA $(root_sysconfdir)/mke2fs.conf.e2fsprogs-new"; \
> > + $(INSTALL_DATA) mke2fs.conf \
> > + $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-new; \
> > + echo "Warning: installing mke2fs.conf in $(DESTDIR)$(root_sysconfdir)/mke2fs.conf.e2fsprogs-new"; \
> > + echo "Check to see if you need to update your $(root_sysconfdir)/mke2fs.conf"; \
> > echo " "; \
> > fi; \
> > else \
> > @@ -565,8 +554,7 @@ uninstall:
> > done
> > $(RM) -f $(DESTDIR)$(root_sbindir)/mkfs.ext2 \
> > $(DESTDIR)$(root_sbindir)/mkfs.ext3 \
> > - $(DESTDIR)$(root_sbindir)/mkfs.ext4 \
> > - $(DESTDIR)$(root_sbindir)/mkfs.ext4dev
> > + $(DESTDIR)$(root_sbindir)/mkfs.ext4
> > for i in $(UPROGS); do \
> > $(RM) -f $(DESTDIR)$(bindir)/$$i; \
> > done
> > @@ -576,11 +564,9 @@ uninstall:
> > $(RM) -f $(DESTDIR)$(man8dir)/mkfs.ext2.8 \
> > $(DESTDIR)$(man8dir)/mkfs.ext3.8 \
> > $(DESTDIR)$(man8dir)/mkfs.ext4.8 \
> > - $(DESTDIR)$(man8dir)/mkfs.ext4dev.8 \
> > $(DESTDIR)$(man8dir)/fsck.ext2.8 \
> > $(DESTDIR)$(man8dir)/fsck.ext3.8 \
> > - $(DESTDIR)$(man8dir)/fsck.ext4.8 \
> > - $(DESTDIR)$(man8dir)/fsck.ext4dev.8
> > + $(DESTDIR)$(man8dir)/fsck.ext4.8
> >
> > for i in $(UMANPAGES); do \
> > $(RM) -f $(DESTDIR)$(man1dir)/$$i; \
> > diff --git a/misc/fsck.c b/misc/fsck.c
> > index 826aaeb..2df15cd 100644
> > --- a/misc/fsck.c
> > +++ b/misc/fsck.c
> > @@ -84,7 +84,6 @@ static const char *really_wanted[] = {
> > "ext2",
> > "ext3",
> > "ext4",
> > - "ext4dev",
> > "jfs",
> > "reiserfs",
> > "xiafs",
> > @@ -455,8 +454,7 @@ static int execute(const char *type, const char *device, const char *mntpt,
> > if (progress) {
> > if ((strcmp(type, "ext2") == 0) ||
> > (strcmp(type, "ext3") == 0) ||
> > - (strcmp(type, "ext4") == 0) ||
> > - (strcmp(type, "ext4dev") == 0)) {
> > + (strcmp(type, "ext4") == 0)) {
> > char tmp[80];
> >
> > tmp[0] = 0;
> > @@ -632,8 +630,7 @@ static struct fsck_instance *wait_one(int flags)
> > continue;
> > if (strcmp(inst2->type, "ext2") &&
> > strcmp(inst2->type, "ext3") &&
> > - strcmp(inst2->type, "ext4") &&
> > - strcmp(inst2->type, "ext4dev"))
> > + strcmp(inst2->type, "ext4"))
> > continue;
> > /*
> > * If we've just started the fsck, wait a tiny
> > diff --git a/misc/mke2fs.8.in b/misc/mke2fs.8.in
> > index 9c38e20..9015770 100644
> > --- a/misc/mke2fs.8.in
> > +++ b/misc/mke2fs.8.in
> > @@ -299,10 +299,6 @@ The \fBroot_owner=\fR option allows explicitly specifying these values,
> > and avoid side-effects for users that do not expect the contents of the
> > filesystem to change based on the user running \fBmke2fs\fR.
> > .TP
> > -.B test_fs
> > -Set a flag in the filesystem superblock indicating that it may be
> > -mounted using experimental kernel code, such as the ext4dev filesystem.
> > -.TP
> > .BI discard
> > Attempt to discard blocks at mkfs time (discarding blocks initially is useful
> > on solid state devices and sparse / thin-provisioned storage). When the device
> > diff --git a/misc/mke2fs.c b/misc/mke2fs.c
> > index facbe4c..44d1a60 100644
> > --- a/misc/mke2fs.c
> > +++ b/misc/mke2fs.c
> > @@ -952,8 +952,6 @@ static void parse_extended_opts(struct ext2_super_block *param,
> >
> > param->s_reserved_gdt_blocks = rsv_gdb;
> > }
> > - } else if (!strcmp(token, "test_fs")) {
> > - param->s_flags |= EXT2_FLAGS_TEST_FILESYS;
> > } else if (!strcmp(token, "lazy_itable_init")) {
> > if (arg)
> > lazy_itable_init = strtoul(arg, &p, 0);
> > @@ -1031,7 +1029,6 @@ static void parse_extended_opts(struct ext2_super_block *param,
> > "\tlazy_journal_init=<0 to disable, 1 to enable>\n"
> > "\troot_uid=<uid of root directory>\n"
> > "\troot_gid=<gid of root directory>\n"
> > - "\ttest_fs\n"
> > "\tdiscard\n"
> > "\tnodiscard\n"
> > "\tquotatype=<usr OR grp>\n\n"),
> > @@ -1244,8 +1241,7 @@ static char **parse_fs_type(const char *fs_type,
> > strcmp(ext_type, "ext2")) {
> > printf(_("\nYour mke2fs.conf file does not define the "
> > "%s filesystem type.\n"), ext_type);
> > - if (!strcmp(ext_type, "ext3") || !strcmp(ext_type, "ext4") ||
> > - !strcmp(ext_type, "ext4dev")) {
> > + if (!strcmp(ext_type, "ext3") || !strcmp(ext_type, "ext4")) {
> > printf("%s", _("You probably need to install an "
> > "updated mke2fs.conf file.\n\n"));
> > }
> > @@ -2670,9 +2666,6 @@ int main (int argc, char *argv[])
> > io_channel_set_options(fs->io, opt_string);
> > }
> >
> > - if (fs_param.s_flags & EXT2_FLAGS_TEST_FILESYS)
> > - fs->super->s_flags |= EXT2_FLAGS_TEST_FILESYS;
> > -
> > if ((fs_param.s_feature_incompat &
> > (EXT3_FEATURE_INCOMPAT_EXTENTS|EXT4_FEATURE_INCOMPAT_FLEX_BG)) ||
> > (fs_param.s_feature_ro_compat &
> > diff --git a/misc/mke2fs.conf.in b/misc/mke2fs.conf.in
> > index 178733f..980bf9c 100644
> > --- a/misc/mke2fs.conf.in
> > +++ b/misc/mke2fs.conf.in
> > @@ -15,11 +15,6 @@
> > auto_64-bit_support = 1
> > inode_size = 256
> > }
> > - ext4dev = {
> > - features = has_journal,extent,huge_file,flex_bg,metadata_csum,64bit,dir_nlink,extra_isize
> > - inode_size = 256
> > - options = test_fs=1
> > - }
> > small = {
> > blocksize = 1024
> > inode_size = 128
> > diff --git a/misc/tune2fs.8.in b/misc/tune2fs.8.in
> > index 9455707..c1c64e7 100644
> > --- a/misc/tune2fs.8.in
> > +++ b/misc/tune2fs.8.in
> > @@ -231,14 +231,6 @@ program.
> > .IP
> > This superblock setting is only honored in 2.6.35+ kernels;
> > and not at all by the ext2 and ext3 file system drivers.
> > -.TP
> > -.B test_fs
> > -Set a flag in the filesystem superblock indicating that it may be
> > -mounted using experimental kernel code, such as the ext4dev filesystem.
> > -.TP
> > -.B ^test_fs
> > -Clear the test_fs flag, indicating the filesystem should only be mounted
> > -using production-level filesystem code.
> > .RE
> > .TP
> > .B \-f
> > diff --git a/misc/tune2fs.c b/misc/tune2fs.c
> > index 8ff47d2..5bc38cb 100644
> > --- a/misc/tune2fs.c
> > +++ b/misc/tune2fs.c
> > @@ -1735,14 +1735,6 @@ static int parse_extended_opts(ext2_filsys fs, const char *opts)
> > intv);
> > fs->super->s_mmp_update_interval = intv;
> > ext2fs_mark_super_dirty(fs);
> > - } else if (!strcmp(token, "test_fs")) {
> > - fs->super->s_flags |= EXT2_FLAGS_TEST_FILESYS;
> > - printf("Setting test filesystem flag\n");
> > - ext2fs_mark_super_dirty(fs);
> > - } else if (!strcmp(token, "^test_fs")) {
> > - fs->super->s_flags &= ~EXT2_FLAGS_TEST_FILESYS;
> > - printf("Clearing test filesystem flag\n");
> > - ext2fs_mark_super_dirty(fs);
> > } else if (strcmp(token, "stride") == 0) {
> > if (!arg) {
> > r_usage++;
> > @@ -1815,9 +1807,7 @@ static int parse_extended_opts(ext2_filsys fs, const char *opts)
> > "\thash_alg=<hash algorithm>\n"
> > "\tmount_opts=<extended default mount options>\n"
> > "\tstride=<RAID per-disk chunk size in blocks>\n"
> > - "\tstripe_width=<RAID stride*data disks in blocks>\n"
> > - "\ttest_fs\n"
> > - "\t^test_fs\n"));
> > + "\tstripe_width=<RAID stride*data disks in blocks>\n"));
> > free(buf);
> > return 1;
> > }
> > diff --git a/tests/mke2fs.conf.in b/tests/mke2fs.conf.in
> > index c06050d..ee246ba 100644
> > --- a/tests/mke2fs.conf.in
> > +++ b/tests/mke2fs.conf.in
> > @@ -17,11 +17,6 @@
> > features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
> > inode_size = 256
> > }
> > - ext4dev = {
> > - features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
> > - inode_size = 256
> > - options = test_fs=1
> > - }
> > small = {
> > blocksize = 1024
> > inode_size = 128
> >
>
>

2014-09-15 21:41:54

by Eric Sandeen

[permalink] [raw]
Subject: Re: [PATCH] e2fsprogs: Remove any occurrence of ext4dev and test_fs

On 2/19/14 10:56 AM, Eric Sandeen wrote:
> On 2/19/14, 8:57 AM, Lukas Czerner wrote:
>> ext4dev is no longer supported by kernel so we really need to get rid of
>> it entirely from e2fsprogs.
>>
>> This patch removes any occurrence of ext4dev and test_fs flag from the
>> e2fsprogs tools with one exception. Out of paranoia we can still leave
>> the possibility to remove test_fs flag (EXT2_FLAGS_TEST_FILESYS) from
>> the file system using e2fsck by specifying clear_test_fs_flag option in
>> the e2fsck.config file.
>
> Yes, I think this makes good sense. While one could argue that
> test_fs may be used for some other purpose in the future, we have
> added a lot of fairly experimental code without making use of it,
> so I'd argue that it has no practical use going forward.
>
> Acked-by: Eric Sandeen <[email protected]>

Ted, any thoughts on this?

-Eric


2015-02-17 22:35:03

by Eric Sandeen

[permalink] [raw]
Subject: Re: [PATCH] e2fsprogs: Remove any occurrence of ext4dev and test_fs

On 9/15/14 4:41 PM, Eric Sandeen wrote:
> On 2/19/14 10:56 AM, Eric Sandeen wrote:
>> On 2/19/14, 8:57 AM, Lukas Czerner wrote:
>>> ext4dev is no longer supported by kernel so we really need to get rid of
>>> it entirely from e2fsprogs.
>>>
>>> This patch removes any occurrence of ext4dev and test_fs flag from the
>>> e2fsprogs tools with one exception. Out of paranoia we can still leave
>>> the possibility to remove test_fs flag (EXT2_FLAGS_TEST_FILESYS) from
>>> the file system using e2fsck by specifying clear_test_fs_flag option in
>>> the e2fsck.config file.
>>
>> Yes, I think this makes good sense. While one could argue that
>> test_fs may be used for some other purpose in the future, we have
>> added a lot of fairly experimental code without making use of it,
>> so I'd argue that it has no practical use going forward.
>>
>> Acked-by: Eric Sandeen <[email protected]>
>
> Ted, any thoughts on this?

I was going to wait for the 1-year anniversary of patch submission, but
decided to jump the gun by 2 days. ;)

Ted, do you plan to merge this patch, or should I take it off our radar.

Thanks,
-Eric