	This is the new version (1.12) of the second extended file system
management programs.

	Note: If you are using the RedHat RPM distributions of
e2fsprogs, don't worry about the next paragraph; all others, please
read on!

	See the file INSTALL for instructions on building and
installing e2fsprogs.  This is important!  Note that your /etc/fstab
file may need modifying before you install the new fsck program.  See
the INSTALL file for more details.

	This version contains programs written by Theodore Ts'o and Remy Card.
This distribution was packaged by Ted and Remy with the help of Stephen Tweedie
and Alexy Vovenko.

	The programs written or rewritten by Ted are:
	- libext2fs: a new library containing entries to access the control
	  structures of a second extended file system.
	- e2fsck: a new file system checker which uses optimized routines.
	  This new checker is much more efficient and safer than the old
	  e2fsck.
	- mke2fs: a new file system creator which uses the ext2fs library.
	- debugfs: a file system debugger which can be used to examine and
	  change the state of a file system.  Use it with caution since it
	  can corrupt file systems if you are not careful.
	- fsck: a new fsck front-end.  This new fsck can run multiple
	  several file system checks simultanously if they are on different
	  disks.

	The programs written by Remy are:
	- badblocks: a new bad blocks checker.  It can be run by the super
	  user to search for bad blocks on a device and can also be called
	  by e2fsck and mke2fs.
	- dumpe2fs: a new program which displays the control structure of
	  a file system.  To understand the output of this program, one needs
	  to know the physical structure of a second extended file system.
	- mklost+found: re-creates a lost+found directory if it has been
	  deleted.
	- tune2fs: adjusts tunable paramaters on a file system.
	- chattr: changes files attributes and version.
	- lsattr: lists files attributes and version.

	Manual pages are included in this package.

	In case of bugs in these programs, please contact Ted
<tytso@mit.edu> and Remy <card@masi.ibp.fr>.  See the e2fsck man page
for suggestions of what sort of information to include when submitting
bug reports for e2fsck.
