File Archive

Output of file : README contained in archive : E2FSPRG4.ZIP

README file for the second extended file system

Release 0.3

Remy Card
([email protected])

This file documents the latest release (0.3) of the second extended
file system.

The second ext file system

The 2nd ext file system is an extension of the ext file system to get
more functionalities and better performances.

The functionalities of this file system are :
- file names from 1 to 255 characters (as in the ext fs but the
directory structure has changed and the routines have been rewritten)
- the maximum size of a file system is 4 TB (but the implementation
currently restricts it to 2 GB - still enough I hope)
- the maximum size of a file is 16 GB
- separate atime/ctime/mtime are supported
- dtime (deletion time) is supported to allow an undelete program (not
written yet) to work
- inode version is supported (may be used one day by a NFS server)
- Access Control List for files (not supported yet)
- blocks bigger than 1KB and fragments (not supported yet)
- st_blocks/st_blksize support
- blocks reserved for the super user (10% by default)
- a directory cache used to speed up directory lookups
- new free blocks/inodes management (the bitmaps are back)
- 12 direct data blocks in the inode allowing more files to be coded
without indirection
- a valid flag avoiding checks when the fs is clean
- super block and groups descriptors duplication in each group allowing
a recovery even if critical data is damaged
- fast symbolic links whose content is stored in the inode itself

How to integrate the second ext file system

As of linux 0.99 pl7, the second extended file system has been included
in the standard kernel distribution. Thus, there is no need to patch the
kernel source to use it. Simply answer yes to the question "Second extended fs
support" at the "make config" step when compiling the kernel.

Using the second ext fs

The second ext fs programs are :
- mke2fs : creation of a second extended file system
- e2fsck : check of a second extended fs
- dirdump : dump of directories in a second extended file system
- mklost+found : creates a lost+found directory if it has been removed

Man pages for e2fsck, mke2fs and mklost+found are included with the

A second ext fs can be mounted by :
mount -t ext2 /dev/hdXX /dir

Second ext fs internals

The second extended file system now uses bitmaps for free blocks/inodes
management. A file system is divided in groups. Each group currently
contains 8192 blocks (in the future, I will add an option to mke2fs allowing
a different group size). Each group contains a bitmap block for blocks, a
bitmap block for inodes, some blocks for a part of the inode table and some
data blocks.

The file system has the following structure :

|Boot | Group 0 | Group 1 | ... | Group N |
|block| | | | |

Each group has the following structure :

| Super | Groups | Blocks | Inodes | Inode | Data |
| block | descriptors | bitmap | bitmap | table | blocks |

Status of the second ext fs and its limitations

I am still working on the second ext fs. I release this test version to
get some feedback.

The known bugs or limitations of the second ext fs are :
- mke2fs is not very clever, sometimes it may refuse to create a file
system if the last group is too small. If this happens, try creating
a smaller or bigger file system.
- there is no conversion program from the ext fs to the 2nd ext fs yet.
I also have an old version of it (written by Wayne Davison) which
has to be adapted (BTW, even if this conversion program worked, I
would not release it until the 2nd ext fs is stable).

Future plans for the 2nd ext fs

I am still working on the 2nd ext fs to improve it :
- implement Access Control List (other people have shown interest in
- implement bigger blocks and fragments management (not really easy
since the Linux kernel only supports reads and writes of 1KB blocks),
- write an undelete program (other people have shown interest in that),
- fix bugs,
- ...

In case of bugs

If you find a bug in the 2nd ext fs, please send a mail to me to report


Lots of people have helped me during my work on this file system.

The 2nd ext fs is based on the ext fs which is itself based on the
minix file system routines written by Linus Torvalds. Linus also gave me some
very good advices and suggestions during the design and the implementation of
this file system (and he also corrected bugs in some of my patches ...).

Other people have influenced the design of this file system :
- Roger Binns suggested the valid flag,
- Werner Almesberger and Theodore Ts'o suggested ACL,
- Werner Almesberger wanted an undelete feature,
- William Davidsen and Theodore Ts'o made me understand that bitmaps
are better than free lists to obtain good performances,
- Adam Richter has enhanced mkefs (the changes have been adapted in
mke2fs) to figure out the size of a file system,
- Arnt Gulbrandsen suggested the dtime to be used in an undelete

I'd also like to thank the testers of the (old) ext fs. Their reports
have helped me to improve it and to implement the second ext fs.

And finally, all my thanks go to the co-developpers of the second
extended file system : Wayne Davison has helped me so much during the design
and the implementation of the 2nd ext fs and Stephen Tweedie has rewritten
some important parts to make it much faster.