
Ext3 Filesystem
===============

ext3 was originally released in September 1999. Written by Stephen Tweedie
for 2.2 branch, and ported to 2.4 kernels by Peter Braam, Andreas Dilger, 
Andrew Morton, Alexander Viro, Ted Ts'o and Stephen Tweedie.

ext3 is ext2 filesystem enhanced with journalling capabilities. 

Options
=======

When mounting an ext3 filesystem, the following option are accepted:
(*) == default

jounal=update		Update the ext3 file system's journal to the 
			current format.

journal=inum		When a journal already exists, this option is 
			ignored. Otherwise, it specifies the number of
			the inode which will represent the ext3 file
			system's journal file.

bsddf 		(*)	Make 'df' act like BSD.
minixdf			Make 'df' act like Minix.

check=none		Don't do extra checking of bitmaps on mount.
nocheck		

debug			Extra debugging information is sent to syslog.

noload			Don't load the journal on mounting.

errors=remount-ro(*)	Remount the filesystem read-only on an error.
errors=continue		Keep going on a filesystem error.
errors=panic		Panic and halt the machine if an error occurs.

grpid			Give objects the same group ID as their creator.
bsdgroups		

nogrpid		(*)	New objects have the group ID of their creator.
sysvgroups

resgid=n		The group ID which may use the reserved blocks.

resuid=n		The user ID which may use the reserved blocks.

sb=n			Use alternate superblock at this location.

data=journal		All data are committed into the journal prior 
			to being written into the main file system.
		
data=ordered	(*)	All data are forced directly out to the main file 
			system prior to its metadata being committed to 
			the journal.
		
data=writeback  	Data ordering is not preserved, data may be 
			written into the main file system after its
			metadata has been committed to the journal.

quota			Quota options are currently silently ignored.
noquota			(see fs/ext3/super.c, line 594)
grpquota
usrquota


Specification
=============
ext3 shares all disk implementation with ext2 filesystem, and add
transactions capabilities to ext2.  Journaling is done by the
Journaling block device layer.

Journaling Block Device layer
-----------------------------
The Journaling Block Device layer (JBD) isn't ext3 specific.  It was
design to add journaling capabilities on a block device.  The ext3
filesystem code will inform the JBD of modifications it is performing
(Call a transaction).  the journal support the transactions start and
stop, and in case of crash, the journal can replayed the transactions
to put the partition on a consistent state fastly.

handles represent a single atomic update to a filesystem.  JBD can
handle external journal on a block device.

Data Mode
---------
There's 3 different data modes:

* writeback mode
In data=writeback mode, ext3 does not journal data at all.  This mode
provides a similar level of journaling as XFS, JFS, and ReiserFS in its
default mode - metadata journaling.  A crash+recovery can cause
incorrect data to appear in files which were written shortly before the
crash.  This mode will typically provide the best ext3 performance.

* ordered mode
In data=ordered mode, ext3 only officially journals metadata, but it
logically groups metadata and data blocks into a single unit called a
transaction.  When it's time to write the new metadata out to disk, the
associated data blocks are written first.  In general, this mode
perform slightly slower than writeback but significantly faster than
journal mode.

* journal mode
data=journal mode provides full data and metadata journaling.  All new
data is written to the journal first, and then to its final location. 
In the event of a crash, the journal can be replayed, bringing both
data and metadata into a consistent state.  This mode is the slowest
except when data needs to be read from and written to disk at the same
time where it outperform all others mode.

Compatibility
-------------

Ext2 partitions can be easily convert to ext3, with `tune2fs -j <dev>`.
 Ext3 is fully compatible with Ext2.  Ext3 partitions can easily be
mounted as Ext2.

External Tools
==============
see manual pages to know more.

tune2fs: 	create a ext3 journal on a ext2 partition with the -j flags
mke2fs: 	create a ext3 partition with the -j flags
debugfs: 	ext2 and ext3 file system debugger

References
==========

kernel source:	file:/usr/src/linux/fs/ext3
		file:/usr/src/linux/fs/jbd

programs: 	http://e2fsprogs.sourceforge.net

useful link:
		http://www.zip.com.au/~akpm/linux/ext3/ext3-usage.html
		http://www-106.ibm.com/developerworks/linux/library/l-fs7/
		http://www-106.ibm.com/developerworks/linux/library/l-fs8/
