diff mbox

e2fsprogs: Remove any occurrence of ext4dev and test_fs

Message ID 1392821835-12059-1-git-send-email-lczerner@redhat.com
State New, archived
Headers show

Commit Message

Lukas Czerner Feb. 19, 2014, 2:57 p.m. UTC
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 <lczerner@redhat.com>
---
 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(-)

Comments

Eric Sandeen Feb. 19, 2014, 4:56 p.m. UTC | #1
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 <sandeen@redhat.com>

> Signed-off-by: Lukas Czerner <lczerner@redhat.com>
> ---
>  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
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Lukas Czerner March 3, 2014, 12:55 p.m. UTC | #2
On Wed, 19 Feb 2014, Eric Sandeen wrote:

> Date: Wed, 19 Feb 2014 10:56:35 -0600
> From: Eric Sandeen <sandeen@redhat.com>
> To: Lukas Czerner <lczerner@redhat.com>, linux-ext4@vger.kernel.org
> Cc: tytso@mit.edu
> 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 <sandeen@redhat.com>

Hi Ted,

are you planning to take this in ?

Thanks!
-Lukas

> 
> > Signed-off-by: Lukas Czerner <lczerner@redhat.com>
> > ---
> >  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
> > 
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Eric Sandeen Sept. 15, 2014, 9:41 p.m. UTC | #3
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 <sandeen@redhat.com>

Ted, any thoughts on this?

-Eric

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Eric Sandeen Feb. 17, 2015, 10:34 p.m. UTC | #4
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 <sandeen@redhat.com>
> 
> 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

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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