| Changes from version 0.5a to version 0.5b | 
 | ========================================= | 
 | 	- Now that we have sysctl(), the immutable flag cannot be changed when | 
 | 	  the system is running at security level > 0. | 
 | 	- Some cleanups in the code. | 
 | 	- More consistency checks on directories. | 
 | 	- The ext2.diff patch from Tom May <ftom@netcom.com> has been | 
 | 	  integrated.  This patch replaces expensive "/" and "%" with | 
 | 	  cheap ">>" and "&" where possible. | 
 |  | 
 | Changes from version 0.5 to version 0.5a | 
 | ======================================== | 
 | 	- Zero the partial block following the end of the file when a file | 
 | 	  is truncated. | 
 | 	- Dates updated in the copyright. | 
 | 	- More checks when the filesystem is mounted: the count of blocks, | 
 | 	  fragments, and inodes per group is checked against the block size. | 
 | 	- The buffers used by the error routines are now static variables, to | 
 | 	  avoid using space on the kernel stack, as requested by Linus. | 
 | 	- Some cleanups in the error messages (some versions of syslog contain | 
 | 	  a bug which truncates an error message if it contains '\n'). | 
 | 	- Check that no data can be written to a file past the 2GB limit. | 
 | 	- The famous readdir() bug has been fixed by Stephen Tweedie. | 
 | 	- Added a revision level in the superblock. | 
 | 	- Full support for O_SYNC flag of the open system call. | 
 | 	- New mount options: `resuid=#uid' and `resgid=#gid'.  `resuid' causes | 
 | 	  ext2fs to consider user #uid like root for the reserved blocks. | 
 | 	  `resgid' acts the same way with group #gid.  New fields in the | 
 | 	  superblock contain default values for resuid and resgid and can | 
 | 	  be modified by tune2fs. | 
 | 	  Idea comes from Rene Cougnenc <cougnenc@renux.frmug.fr.net>. | 
 | 	- New mount options: `bsddf' and `minixdf'.  `bsddf' causes ext2fs | 
 | 	  to remove the blocks used for FS structures from the total block | 
 | 	  count in statfs.  With `minixdf', ext2fs mimics Minix behavior | 
 | 	  in statfs (i.e. it returns the total number of blocks on the | 
 | 	  partition).  This is intended to make bde happy :-) | 
 | 	- New file attributes: | 
 | 	  - Immutable files cannot be modified.  Data cannot be written to | 
 | 	    these files.  They cannot be removed, renamed and new links cannot | 
 | 	    be created.  Even root cannot modify the files.  He has to remove | 
 | 	    the immutable attribute first. | 
 | 	  - Append-only files: can only be written in append-mode when writing. | 
 | 	    They cannot be removed, renamed and new links cannot be created. | 
 | 	    Note: files may only be added to an append-only directory. | 
 | 	  - No-dump files: the attribute is not used by the kernel.  My port | 
 | 	    of dump uses it to avoid backing up files which are not important. | 
 | 	- New check in ext2_check_dir_entry: the inode number is checked. | 
 | 	- Support for big file systems: the copy of the FS descriptor is now | 
 | 	  dynamically allocated (previous versions used a fixed size array). | 
 | 	  This allows to mount 2GB+ FS. | 
 | 	- Reorganization of the ext2_inode structure to allow other operating | 
 | 	  systems to create specific fields if they use ext2fs as their native | 
 | 	  file system.  Currently, ext2fs is only implemented in Linux but | 
 | 	  will soon be part of Gnu Hurd and of Masix. | 
 |  | 
 | Changes from version 0.4b to version 0.5 | 
 | ======================================== | 
 | 	- New superblock fields: s_lastcheck and s_checkinterval added | 
 | 	  by Uwe Ohse <uwe@tirka.gun.de> to implement timedependent checks | 
 | 	  of the file system | 
 | 	- Real random numbers for secure rm added by Pierre del Perugia | 
 | 	  <delperug@gla.ecoledoc.ibp.fr> | 
 | 	- The mount warnings related to the state of a fs are not printed | 
 | 	  if the fs is mounted read-only, idea by Nick Holloway | 
 | 	  <alfie@dcs.warwick.ac.uk> | 
 |  | 
 | Changes from version 0.4a to version 0.4b | 
 | ========================================= | 
 | 	- Copyrights changed to include the name of my laboratory. | 
 | 	- Clean up of balloc.c and ialloc.c. | 
 | 	- More consistency checks. | 
 | 	- Block preallocation added by Stephen Tweedie. | 
 | 	- Direct reads of directories disallowed. | 
 | 	- Readahead implemented in readdir by Stephen Tweedie. | 
 | 	- Bugs in block and inodes allocation fixed. | 
 | 	- Readahead implemented in ext2_find_entry by Chip Salzenberg. | 
 | 	- New mount options: | 
 | 	  `check=none|normal|strict' | 
 | 	  `debug' | 
 | 	  `errors=continue|remount-ro|panic' | 
 | 	  `grpid', `bsdgroups' | 
 | 	  `nocheck' | 
 | 	  `nogrpid', `sysvgroups' | 
 | 	- truncate() now tries to deallocate contiguous blocks in a single call | 
 | 	  to ext2_free_blocks(). | 
 | 	- lots of cosmetic changes. | 
 |  | 
 | Changes from version 0.4 to version 0.4a | 
 | ======================================== | 
 |         - the `sync' option support is now complete.  Version 0.4 was not | 
 |           supporting it when truncating a file.  I have tested the synchronous | 
 |           writes and they work but they make the system very slow :-(  I have | 
 |           to work again on this to make it faster. | 
 |         - when detecting an error on a mounted filesystem, version 0.4 used | 
 |           to try to write a flag in the super block even if the filesystem had | 
 |           been mounted read-only.  This is fixed. | 
 |         - the `sb=#' option now causes the kernel code to use the filesystem | 
 |           descriptors located at block #+1.  Version 0.4 used the superblock | 
 |           backup located at block # but used the main copy of the descriptors. | 
 |         - a new file attribute `S' is supported.  This attribute causes | 
 |           synchronous writes but is applied to a file not to the entire file | 
 |           system (thanks to Michael Kraehe <kraehe@bakunin.north.de> for | 
 |           suggesting it). | 
 |         - the directory cache is inhibited by default.  The cache management | 
 |           code seems to be buggy and I have to look at it carefully before | 
 |           using it again. | 
 |         - deleting a file with the `s' attribute (secure deletion) causes its | 
 |           blocks to be overwritten with random values not with zeros (thanks to | 
 |           Michael A. Griffith <grif@cs.ucr.edu> for suggesting it). | 
 |         - lots of cosmetic changes have been made. | 
 |  | 
 | Changes from version 0.3 to version 0.4 | 
 | ======================================= | 
 |         - Three new mount options are supported: `check', `sync' and `sb=#'. | 
 |           `check' tells the kernel code to make more consistency checks | 
 |           when the file system is mounted.  Currently, the kernel code checks | 
 |           that the blocks and inodes bitmaps are consistent with the free | 
 |           blocks and inodes counts.  More checks will be added in future | 
 |           releases. | 
 |           `sync' tells the kernel code to use synchronous writes when updating | 
 |           an inode, a bitmap, a directory entry or an indirect block.  This | 
 |           can make the file system much slower but can be a big win for files | 
 |           recovery in case of a crash (and we can now say to the BSD folks | 
 |           that Linux also supports synchronous updates :-). | 
 |           `sb=#' tells the kernel code to use an alternate super block instead | 
 |           of its master copy.  `#' is the number of the block (counted in | 
 |           1024 bytes blocks) which contains the alternate super block. | 
 |           An ext2 file system typically contains backups of the super block | 
 |           at blocks 8193, 16385, and so on. | 
 |         - I have change the meaning of the valid flag used by e2fsck.  it | 
 |           now contains the state of the file system.  If the kernel code | 
 |           detects an inconsistency while the file system is mounted, it flags | 
 |           it as erroneous and e2fsck will detect that on next run. | 
 |         - The super block now contains a mount counter.  This counter is | 
 |           incremented each time the file system is mounted read/write.   When | 
 |           this counter becomes bigger than a maximal mount counts (also stored | 
 |           in the super block), e2fsck checks the file system, even if it had | 
 |           been unmounted cleanly, and resets this counter to 0. | 
 |         - File attributes are now supported.  One can associate a set of | 
 |           attributes to a file.  Three attributes are defined: | 
 |           `c': the file is marked for automatic compression, | 
 |           `s': the file is marked for secure deletion: when the file is | 
 |           deleted, its blocks are zeroed and written back to the disk, | 
 |           `u': the file is marked for undeletion: when the file is deleted, | 
 |           its contents are saved to allow a future undeletion. | 
 |           Currently, only the `s' attribute is implemented in the kernel | 
 |           code.  Support for the other attributes will be added in a future | 
 |           release. | 
 |         - a few bugs related to times updates have been fixed by Bruce | 
 |           Evans and me. | 
 |         - a bug related to the links count of deleted inodes has been fixed. | 
 |           Previous versions used to keep the links count set to 1 when a file | 
 |           was deleted.  The new version now sets links_count to 0 when deleting | 
 |           the last link. | 
 |         - a race condition when deallocating an inode has been fixed by | 
 |           Stephen Tweedie. | 
 |  |