Frequently Asked Questions

From Ext4
Revision as of 14:02, 28 March 2008 by Tthtlc (Talk | contribs)

Jump to: navigation, search
This page is a stub

You can help Ext2/3/4 Wiki by expanding it.


Getting Started

Where do I get the latest version of e2fsprogs?

The latest version of e2fsprogs can be found at Soureforge or at

How do I build e2fsprogs?

The INSTALL file in the top of the source tree gives more detailed information, but e2fsprogs uses a standard configure script, so the standard "./configure; make" will build the e2fsprogs binaries. Note that if you wish to build the ELF shared libraries, you need to add the "--enable-elf-shlibs" option to the configure invocation.

How do I mount a fresh new storage device as ext4?

For example, if the new device has been detected as /dev/sdb1 (check "dmesg" output):

Using the newly installed e2fsprogs:

cd misc/
mke2fs -E test_fs /dev/sdb1
cd debugfs/
./debugfs -w /dev/sdb1
debugfs 1.40.5 (27-Jan-2008)
debugfs: set_super_value s_flags 4
debugfs: quit

blkid /dev/sdb1
/dev/sdb1: UUID="3aa983ef-0dcd-474d-a9d3-2660ff6ef3e7" TYPE="ext4dev"
mkdir /mnt/test
tune2fs -j /dev/sdb1
mount -t ext4dev /dev/sdb1 /mnt/test

Why do I get "EXT4-fs: sdb1: not marked OK to use with test code." in my dmesg?

This error arises from not executing the "mke2fs -E test_fs /dev/sdb1", which will label the partition as test_fs. This signature is currently checked for in the ext4 development source codes.

How do I turned off the mballoc feature?

By default "mount" will enable mballoc feature when mounting. To turn it off:

mount -t ext4dev -o data=writeback,delalloc,extents,nomballoc /dev/sdb1 /mnt/test

How do I turned off the extent feature?

By default "mount" will enable extent feature when mounting. To turn it off:

mount -t ext4dev -o data=writeback,delalloc,noextents,mballoc /dev/sdb1 /mnt/test

CAUTION: Once extent feature has been turned on, it is not possible to mount it as ext3 anymore.

Why do I get "EXT4-fs: Unrecognized mount option "delalloc" or missing value"?

Please download the ext4 version from the git patchset, instead of using the kernel source.

What is mballoc feature? After I mounted a partition as mballoc, can I remount it as nomballoc?

Yes, it is possible, just dismount the partition first, and execute "mount" with the nomballoc feature.

Understanding how it works

What are the new features in Ext4 (vs Ext2/3)?

How do I test the features in Ext4?

What external tools are available for testing Ext4 FS?

One commonly known simple tool is fsfuzzer:, and its content is reproduced here:

/* trivial binary file fuzzer by Ilja van Sprundel. It's usage is very simple, it takes a filename and headersize as input. it will then change approximatly between 0 and 10% of the header with random bytes (biased towards the highest bit set) obviously you need a bash script or something as a wrapper ! so far this broke: - libmagic (used file) - preview (osX pdf viewer) - xpdf (hang, not a crash ...) - mach-o loading (osX 10.3.7, seems to be fixed later) - qnx elf loader (panics almost instantly, yikes !) - FreeBSD elf loading - openoffice - amp - osX image loading (.dmg) - libbfd (used objdump) - libtiff (used tiff2pdf) - xine (division by 0, took 20 minutes of fuzzing) - OpenBSD elf loading (3.7 on a sparc) - unixware 713 elf loading - DragonFlyBSD elf loading - solaris 10 elf loading - cistron-radiusd - linux ext2fs (2.4.29) image loading (division by 0) - linux reiserfs (2.4.29) image loading (instant panic !!!) - linux jfs (2.4.29) image loading (long (uninteruptable) loop, 2 oopses) - linux xfs (2.4.29) image loading (instant panic) - windows macromedia flash .swf loading (obviously the windows version of mangle needs a few tweaks to work ...) - Quicktime player 7.0.1 for MacOS X - totem - gnumeric - vlc - mplayer - python bytecode interpreter - realplayer (GOLD) - dvips */ #include <stdio.h> #include <sys/types.h> #include <sys/mman.h> #include <fcntl.h> #define DEFAULT_HEADER_SIZE 1024 #define DEFAULT_NAME "test2" int getseed(void) { int fd = open("/dev/urandom", O_RDONLY); int r; if (fd < 0) { perror("open"); exit(0); } read(fd, &r, sizeof(r)); close(fd); return(r); } int main(int argc, char **argv) { int fd; char *p, *name; unsigned char c; unsigned int count, i, off, hsize; if (argc < 2) { hsize = DEFAULT_HEADER_SIZE; name = DEFAULT_NAME; } else if (argc < 3) { hsize = DEFAULT_HEADER_SIZE; name = argv[1]; } else { hsize = atoi(argv[2]); name = argv[1]; } fd = open(name, O_RDWR); if (fd < 0) { perror("open"); exit(0); } p = mmap(0, hsize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if ((int) p == -1) { perror("mmap"); close(fd); exit(0); } srand(getseed()); count = (unsigned) rand() % (hsize / 10); for (i = 0; i < count; i++) { off = rand() % hsize; c = rand() % 256; /* we want the highest bit set more often, in case of signedness issues */ if ( (rand() % 2) && c < 128) c |= 0x80; p[off] = c; } close(fd); munmap(p, hsize); }

How do I benchmark the performance of Ext4 as against other FS? What are the tools available?

Personal tools