ext4: Add new "development flag" to the ext4 filesystem

This flag is simply a generic "this is a crash/burn test filesystem"
marker. If it is set, then filesystem code which is "in development"
will be allowed to mount the filesystem. Filesystem code which is not
considered ready for prime-time will check for this flag, and if it is
not set, it will refuse to touch the filesystem.

As we start rolling ext4 out to distro's like Fedora, et. al, this makes
it less likely that a user might accidentally start using ext4 on a
production filesystem; a bad thing, since that will essentially make it
be unfsckable until e2fsprogs catches up.

Signed-off-by: Theodore Tso <tytso@MIT.EDU>
Signed-off-by: Mingming Cao <cmm@us.ibm.com>

authored by Theodore Tso and committed by Theodore Ts'o 469108ff 26346ff6

+18
+11
fs/ext4/super.c
··· 1919 1919 printk(KERN_WARNING 1920 1920 "EXT4-fs warning: feature flags set on rev 0 fs, " 1921 1921 "running e2fsck is recommended\n"); 1922 + 1923 + /* 1924 + * Since ext4 is still considered development code, we require 1925 + * that the TEST_FILESYS flag in s->flags be set. 1926 + */ 1927 + if (!(le32_to_cpu(es->s_flags) & EXT2_FLAGS_TEST_FILESYS)) { 1928 + printk(KERN_WARNING "EXT4-fs: %s: not marked " 1929 + "OK to use with test code.\n", sb->s_id); 1930 + goto failed_mount; 1931 + } 1932 + 1922 1933 /* 1923 1934 * Check feature flags regardless of the revision level, since we 1924 1935 * previously didn't change the revision level when setting the flags,
+7
include/linux/ext4_fs.h
··· 490 490 #define EXT4_ORPHAN_FS 0x0004 /* Orphans being recovered */ 491 491 492 492 /* 493 + * Misc. filesystem flags 494 + */ 495 + #define EXT2_FLAGS_SIGNED_HASH 0x0001 /* Signed dirhash in use */ 496 + #define EXT2_FLAGS_UNSIGNED_HASH 0x0002 /* Unsigned dirhash in use */ 497 + #define EXT2_FLAGS_TEST_FILESYS 0x0004 /* to test development code */ 498 + 499 + /* 493 500 * Mount flags 494 501 */ 495 502 #define EXT4_MOUNT_CHECK 0x00001 /* Do mount-time checks */