E2fsprogs 1.39 (May 29, 2006) ============================= Fix 32-bit cleanliness in e2fsprogs so that we can support filesystems between 2**31 and 2**32 blocks. Change mke2fs to use /etc/mke2fs.conf as a configuration file to configure the filesystem features, blocksize, and inode_ratio for different filesystem types. Mke2fs will now create filesystems hash trees and on-line resizing enabled by default, based on the new /etc/mke2fs.conf file. The e2fsprogs tools (resize2fs, e2fsck, mke2fs) will open the filesystem device node in exclusive mode to prevent accidents by system administrators. In the case of resize2fs and mke2fs, it will only use exclusive mode if the filesystem is not mounted. Fixed a bug in mke2fs which caused it to to fail when creating the resize inode for large filesystems. (Addresses Debian Bug #346580) When allocating space for the RAID filesystems with the stride parameter, mke2fs will now place each portion of the group's inode table right up after the superblock (if present) in order to minimize fragmentation of the free space. Speed up mke2fs and e2fsck by writing inode and block bitmaps more efficiently by writing the inode and block bitmaps in one pass, thus reducing the number of disk seeks required. Add support for on-line resizing to resize2fs. Fix blkid library so that logic to determine whether or not a device's cached information in /etc/blkid.tab needs to be verified or not doesn't get confused by a system clock which is insane (for example, if the battery is dead on a Macintosh running PPC Linux. (Addresses Red Hat Bug: #182188) The blkid library will now store the UUID of the external journal used by ext3 filesystems, so that in the future, the userspace mount binary can use this to find the location of the external journal and pass this information to the kernel. E2fsck will now consult a configuration file, /etc/e2fsck.conf to control how various options should be handled. See the e2fsck.conf man page for more details. (Addresses Debian Bug: #150295) E2fsck now prints an explanatory message when delaying a filesystem check when the system is running on battery. (Addresses Debian Bug: #350306) E2fsck will detect if the superblock's last mount field or last write field is in the future, and offer to fix if so. (Addresses Debian Bug #327580) These problems will be fixed automatically in preen mode since Debian's boot sequence bogusly doesn't set the time correctly until potentially very late in the bootup process, and this can cause false positives which will cause users' systems to fail to boot. (Addresses Debian Bugs #343662 and #343645) E2fsck now checks to see if the superblock hint for the location of the external journal is incorrect, and if so, offer to update it. (Addresses Debian Bug: #355644) Fix e2fsck from segfaulting on disconnected inodes that contain one or more extended attributes. (Addresses Debian Bug: #316736, #318463) E2fsck will stop and print a warning if the user tries running a read/write badblocks test on a read-only mounted root filesystem. Fix a memory leak in e2fsck's error paths. (Thanks to Michael C. Thompson for pointing these out; they were originally found using Coverity.) When resizing a file containing a filesystem, resize2fs will expand or truncate a file as necessary. (Addresses Debian Bug: #271607) Resize2fs will now automatically determine the RAID stride parameter that had been used to create the filesystem, and use that for newly created block groups. The RAID stride parameter may also be manually specified on the command line using the new -S option to resize2fs. Fix mke2fs so that it correctly creates external journals on big-endian machines (such as a S/390). Fix a bug in the e2p library which could cause dumpe2fs to (rarely) fail to print out the journal or hash seed UUID. (Thanks to Guillaume Chambraud for pointing this out.) Dumpe2fs will now print the size of the journal (if present). Fix debugfs's set_inode_field command so it can properly set the frag, fsize, uid_high, gid_high, and author fields in the inode instead of silently failing, and so that setting the i_size actually sets i_size correctly. Add a new debugfs command, set_current_time, which sets fs->now so that regression test suites can repeatedly modify the filesystem's last_write fields. Fix a bug in debugfs's icheck which would incorrectly report the owner of an extended attribute block. Fix the debugfs commands htree_dump, dx_hash, and list_dir so they print a print a usage message when an illegal option character is given. Fix debugfs's dump_unsued command on filesystems with a 64k blocksize so it won't core dump. (Addresses SourceForge bug #1424311) Fix mklost+found so that it creates a full-sized directory on filesystems with larger block sizes. Fix a file descriptor leak in blkid library. Fix a display bug in "badblocks -sv" so that the done message properly clears the block number at the end of the test. (Addresses Debian Bug #322231) Allow fractional percentages to the -m option in mke2fs and tune2fs (Addresses Debian Bug: #80205) Use fstat/fstat64 in getsize.c if the the target is a regular file, instead of attempting to do a binary search. Fix some fd leaks in error cases. Add support for device mapper library to the blkid library to ensure that the "best" (i.e., leaf) device is probed by the blkid library. Fix the blkid library so that it notices when an ext2 filesystem is upgraded to ext3. Improve the blkid's library VFAT/FAT detection; it now understands labels stored in the root directory, and is more paranoid about checking the FAT superblock values. Fixed a fd leak in the uuid library which was causing problems for the LVM tools. (Addresses Debian Bug: #345832) Add support for the reiser4 and software suspend partitions to the blkid library. Also add support for extract the label from iso9660 filesystems. Fix a compile_et bug which miscount the number of error messages if continuations are used in the .et file. Add extra sanity checks to protect users from unusual circumstances where /etc/mtab may not be sane, by checking to see if the device is reported busy (works on Linux 2.6) kernels. (Addresses Debian Bug #319002) Updated French, Dutch, Polish, and Swedish translations. (Addresses Debian Bug: #343149, #341911, #300871, #316604, #316782, #330789) Fix use-after-free bug in e2fsck when finishing up the use of the e2fsck context structure. Fixed spelling mistakes, typos, and otherwise clarified man pages and documentation. (Addresses Debian Bugs: #329859, #322188, #316811, #312515, #351268, #357951, #347295, #316040, #368392, #368393, #368394, #368179) Fixed various Debian packaging issues --- see debian/changelog for details. (Addresses Debian Bugs #317862, #320389, #290429, #310950, #310428, #330737, #330736, #329074, #356293, #360046, #366017, #364516, #362544, #362970) Programmer's notes: ------------------- Update config.guess and config.sub to latest version (2006-02-23) from FSF. Fix asm_types.h type conflicts on AMD 64 platforms. (Addresses Debian Bugs: #360661, #360317) Fixed the Makefile so that they work correctly on newer versions of GNU make (i.e., 3.81). Add valgrind support to the regression test suites, and eliminate false positives from valgrind. Add a regression test suite for the blkid library. Fix a fencepost error in resize2fs caught by valgrind. Fix compiler warnings about missing memcpy prototypes. We no longer have the sparc assembly code in the header file any more, so we shouldn't set _EXT2_HAVE_HAS_BITOPS_ for the sparc. This would break compiles on the sparc architectures when using gcc. In the libext2fs library, add the new field fs->now which if non-zero is used instead of the system time when setting various filesystem fields (last modified time, last write time, etc.) Fix gcc 4.01 complaints by adding a missing #include to ext2fs.h which is needed since the inline functions use memcpy(). (Addresses Sourceforge Bug #1251062) Use BUILD_CFLAGS and BUILD_LDFLAGS instead of CFLAGS and LDFLAGS in the build system when building files in the util directory which are needed during the build process. This avoids potential problems when cross-compiling and some of the options specified in CFLAGS or LDFLAGS are not recognized as valid by the host compiler. (Addresses Sourceforge Bug #1261547) Clean up the blkid library by making the superblock and generic i/o functions to be more generic. Clean up interface to the probe function, and fix memory leak. Finally, remove an unneeded reference to probe.h in the lib/blkid/resolve.c Add an ext2fs_read_bb_FILE regression test to confirm proper detection of invalid block #'s. The x86 asm constraints for ext2fs_{set/clear}_bit have been fixed to indicate that the the function read/writes the memory location. Fix various gcc -Wall complaints. Add a dependency to make sure that the subdirectories are created before creating all of the object files, in order to address parallel build problem in the library Makefiles. (Addresses Sourceforge Bug: #1261553) Add $(LDFLAGS) to the command line argument when generating an ELF or Solaris shared library, to allow cross-compile and other builds that might need to specify -L paths to needed libraries. (Addresses Sourceforge Bug #1261549) Add a new feature, EXT2_FEATURE_COMPAT_LAZY_BG, which is initially intended for testing purposes. It allows an ext2/ext3 developer to create very large filesystems using sparse files where most of the block groups are not initialized and so do not require much disk space. Eventually it could be used as a way of speeding up mke2fs and e2fsck for large filesystem, but that would be best done by adding an RO_COMPAT extension to the filesystem to allow the inode table to be lazily initialized on a per-block basis, instead of being entirely initialized or entirely unused on a per-blockgroup basis. Fix backwards compatibility so e2fsprogs will better compile on Linux 2.0.35 systems. Make test scripts more robust against locale-related environment variables Fix type warning problem with sizeof() in ext2fs_open2(). Fix type warning problem with time_t in debugfs.