E2fsprogs 1.28 (August 31, 2002) ================================ Add support for the Hashed-Tree Directory Indexing to e2fsck. Support for setting the htree flag is not included yet, although it can be manually turned on via the debugfs program. Clarified e2fsck error message which is printed when it cannot find sufficient contiguous block when relocating filesystem metadata. Added support for building an EVMS plugin module for ext2/3. This module is substantially the same as the EVMS module shipping with EVMS 1.1, with one or two bugfixes. E2fsprogs can also build this plugin for use with EVMS 1.0 (which did not include the ext2 plugin module), if the configure --enable-old-evms flag is given. Fsck will search through EVMS volumes when trying to resolve filesystem specifications such as LABEL=xxx or UUID=xxx. Added a new utility program, /sbin/findfs, which will return filesystem specifications such as LABEL=xxx or UUID=xxx, and prints the device name. Update and clarified various man pages. (addresses Debian Bug #145044, #146437, #131350, #151990, #144621, #141938) If there are no filesystems specified on fsck's command line, fsck now treat that as if the -As options were given. Previously it would simply do nothing. (Addresses Debian Bug #153102) Mke2fs no longer treats a failure to be able to clear the MD signature at the end of the filesystem as a fatal error. (Addresses Debian Bug #155007) The e2p library functions (which are used by lsattr and chattr) now double check to make sure the file is a regular file or directory before attempting to use the ext2 ioctls. Some device drivers unfortunately respond to the ext2 ioctl's with unknown behaviour. (Addresses Debian Bug #152029). The extended attribute handling has been updated to correspond with the latest V2 bestbits ACL code. Fixed bug in e2fsck which caused it to not clear the dtime field when processing truncated inodes on the orphan list. This could cause data loss(!) if a filesystem is rebooted before a truncate has been committed. E2fsck now uses red/black trees in pass1b, which removes some O(n**2) algorithms. This makes e2fsck much faster in the case of severely corrupted filesystems where a large number of blocks are claimed by a large number of inodes. (Thanks to the 2.5 IDE device driver for inspiring this work.) Resize2fs has been significantly sped up when shrinking and expanding a filesystem by a very small number of blocks (for example, when EVMS is converting a partition to be an EVMS legacy volume). Added a new option to e2fsck, -D, which will optimize or compress all of the directories in the filesystem. E2fsck now catches SIGINT and SIGTERM to make sure it will can properly clean up and only exit at safe points. Fsck will pass SIGINT/SIGTERM to its child processes, and wait until they have all exited before it exits. The uuid parsing code in the uuid library now properly complains when an illegally formatted uuid is presented to it. (Addresses Debian bug #152891) Restrict use of the 2.4 setrlimit ABI f*ckup to kernels between 2.4.10 and 2.4.17, since the workaround can cause problems when using a 2.4 kernel with an old version of glibc built with the 2.2 headers. Fixed a bug in mke2fs where it wasn't properly clearing the initial superblock used by other filesystems. (Addresses Debian bug #147256.) Added support for the synchronous directory feature written by Andrew Morton. The debugfs program can delete directories using the rmdir command. Add support for 8k and 16k filesystems (for systems with page sizes that are greater or equal to 8k or 16k, respectively). Note that these filesystems can not be mounted on x86 systems, or other systems with only 4k page sizes, due to limitations in the current Linux VM code. Resize2fs requires that the filesystem state be valid and have no errors; otherwise, e2fsck -f must be run first. (Previously it simply required that the last fsck time be greater than the last mount time.) Configure now defaults the man pages directory to /usr/share/man on Linux systems. E2fsck now offers to truncate inodes which contain too many blocks (so that i_blocks would overflow. Also fixed handling of large sparse files. E2fsck now more completely checks for symlink validity, including requiring NULL termination and length checks. E2fsck will offer to try forcing a disk write to remap a bad block after finding a read error when reading a filesystem metadata block. Fixed a bug in debugfs which caused the -b and -s options to crash debugfs, as well as breaking the testb, setb, and clearb functions. Added a bmap command to debugfs which calculates the logical to physical block mapping for a particular inode. Fixed a bug in code which checked to see if a device was mounted which sometimes (rarely) failed in the case of a plain file. Fixed a bug in resize2fs where when it reported an error, it would print a message erroneously indicating that the filesystem had been resized before it aborted. When resizing a plain file which is smaller than the requested size, resize2fs will attempt to extended the file so that programs like e2fsck will not complain that the file is too small. Resize2fs will print the actual new size of the filesystem when it is finished resizing. Fixed a bug in debugfs where "ls -l" would report incorrect file type information on big-endian systems. Programmer's notes: ------------------- Fixed collisions with C++ reserved words. Added portability fixes for building e2fsprogs on the HURD and AIX. Added the ext2ed program for creation of test cases. (ext2ed has many limitations and bugs which make it unsuitable for production use.) The ext2fs_read_dir_block2 and ext2fs_write_dir_block now take a new flag, EXT2_DIRBLOCK_V2_STRUCT, which will will reverse when the name_len field is byte swapped on big-endian machines, since in the V2 structure, name_len is a char field which is doesn't need to be byte swapped --- except if an old-style kernel had byte-swapped the name_len field as part of the V1 structure.