E2fsprogs 1.36 (February 4, 2005) ================================= All of the patches that were applied to Fedora Core 3's e2fsprogs-1.35-11.2 have been integrated, although sometimes with a lot of bug fixes first. Users of Fedora Core 3 are strongly encouraged to upgrade to e2fsprogs 1.36 as soon as possible. Add support for filesystem with the online resizing via resize inode feature. Fixed numerous bugs from the Fedora patches. The Fedora patches also didn't bother to do any consistency checking on the resize inode, or add any tests to the regression test suite. The "-R resize=4g" option to mke2fs was a no-op in the Fedora patches, despite being listed in mke2fs's usage message. All of these shortcomings have been corrected. E2fsck can also also fix filesystems trashed by Fedora's resize2fs program. In order to do this, the user must run the commands: debugfs -w /dev/hdXXX -R "features ^resize_inode" e2fsck -f /dev/hdXXX Optionally, the ext2prepare command can be used to re-enable online resizing after the filesystem has been fixed. The fsck program will now accept an optional filedescriptor argument to the -C option. (The Fedora version of this patch would sometimes cause fsck to ignore a parameter on fsck's command line in some rare cases, sigh.) Make sure e2fsprogs doesn't write garbage into the reserved portion of large inodes. Make sure resize2fs releases the blocks belonging to the old inode table blocks when moving the inode table. (Addresses Debian Bug: #290894) Skip the r_resize_inode test if resize2fs is not compiled (due to configure --disable-resizer) E2fsck now checks the summary filesystem accounting information, and if any of the information is obviously wrong, it will force a full filesystem check. (Addresses Debian Bug #291571) Fix e2fsck to not complain when the resize_inode feature is enabled, s_reserved_gdt_blocks is zero, and there is no DIND block allocated in the resize inode. Fix e2fsck to note delete symlinks that contain an extended attribute after the ext_attr feature flag has been cleared. (Addresses Red Hat Bugzilla #146284). Add new utility program, copy_sparse.c, which is very useful for dealing with large sparse files (such as e2image files). Add support for jnl_blocks[] for debugfs's set_super_value. Fix filefrag so that it works correctly with sparse files. Filefrag -v will print first and last blocks. Add interpretation of OS Creator values for FreeBSD and Lites in mke2fs and dumpe2fs. Add mke2fs support so that it can support filesystems larger than 4TB automatically, by retrying with a 4k blocksize if the device size is too big to be expressed using a 1k blocksize. (Addresses Sourceforge bug #1106631) Change blkid to test for NTFS first because Windows sometimes doesn't clear enough of the partition to confuse the probing routines into thinking the old filesystem type is still valid. (Addresses Debian Bug #291990) Add support for swap partition label and uuid's in the blkid library. Add support to the blkid library to recognize Oracle ASM volumes. Make blkid -t display all devices that match the specified criteria, not just the first one, and work more consistently when the blkid cache file is not available or set to /dev/null. (Addresses Debian Bug #290530 and #292425) Badblocks will now correctly display block numbers greater than 999,999,999 in its progress display. The tune2fs program will not allow the user from setting a ridiculous number of reserved blocks which would cause e2fsck to assume the superblock was corrupt. E2fsck's standards for what is a ridiculous number of reserved block has also been relaxed to 50% of the blocks in the filesystem. The blkid library will return vfat in preference to msdos, and ext3 in preference to ext2 (if the journalling flag is set) so that mount will do the right thing. (Addresses Debian bug #287455) Mke2fs will now use the -E option for extended options; the old -R (raid options) option is still accepted for backwards compatibility. Fix a double-free problem in resize2fs. (Red Hat Bugzilla #132707) Mke2fs will now accept a size in megabytes, gigabytes, and other units (via "32m" or "4g" on the command line) if the user finds this more convenient than specifying a block count. Fix an obscure, hard-to find bug in "e2fsck -S" caused by an inode cache coherency problem. Debugfs now supports a new command, set_inode_field, which allows a user to manually set a specific inode field more conveniently, as well as set entries in the indirect block map. Debugfs's set_super_value command has been enhanced so that the user can set most superblock fields, including the date/time fields and some of the more newly added superblock fields. E2fsprogs programs now accept an offset to be passed to the file specifiers, via the syntax: "/tmp/test.img?offset=1024". E2fsprogs programs will now accept blocksizes up to 65536; kernel support on the x86 doesn't exist for now, but it can be useful on other architectures with page sizes greater than 4k. There are 2.6 kernel patches out there which enable this, but they are of this writing still experimental. The e2image command now takes the -s option which will scramble directory entries for raw image files. Fix a file descriptor leak in the filefrag program. Make sure e2fsck doesn't crash when /proc/acpi/ac_adapter is not present. Fix bug in debugfs where kill_file would lead to errors when deleting devices and symlinks. (Sourceforge Bugs #954741 and #957244) Fix bug in the blkid library when detecting the ocfs1 filesystem Remove obsolete EVMS 1.x and a.out DLL support. E2fsck will attempt to recover from a journal containing illegal blocks. Fixed two potential ordering constraint problems in e2fsck which might cause the filesystem to be corrupted if e2fsck is interrupted during a (extremely narrow) race window. Thanks to Junfeng Yang from the Stanford Metacompilation group for pointing this out. Fixed bug in e2fsck where it would not accurately detect whether or not the system is running on adaptor if the ACPI device representing the AC adapter didn't correspond to the what was used on IBM Thinkpads. Change e2fsck to accept directories greater than 32MB. Fix e2fsck so that a checkinterval of zero disables a time-based check of the filesystem. Debugfs will check the DEBUGFS_PAGER environment variable in preference to the PAGER environment variable. (Addresses Debian Bug #239547) Tune2fs will not mark rewrite the superblock if the feature bitmasks are not modified. The debugfs program will set the filetype information when creating a link. Add debugfs -d option to use a separate source of data blocks when reading from an e2image file. Add e2image -I option which allows the e2image metadata to be installed into a filesystem. Fixed bug in the badblocks program which caused "done" to always appear in English even when a translation was available. (Addresses Debian Bug #252836) The blkid program has a new option -o which controls the output format of the blkid program; this is makes blkid more convenient to use in shell scripts. Fix a minor bug in uuid library, which was not using the full 14 bits of clock sequence when generating UUID's. Fix a Y8.8888K problem in the uuid library. Logsave now creates a new session id for itself to avoid getting killed by init when transitioning between init levels. Change the licensing of the UUID library to be the 3-clause BSD-style license; this allows Apple to use the uuid library in Darwin. Add ocfs and ocfs2 probe support into the blkid library. Fix a memory and file descriptor leak in the blkid library. The blkid library will revalidate the device if the system time is earlier than last verification time of the device, since that indicates that the system time is probably not trustworthy. The blkid library will override the default location of the blkid.tab file by the BLKID_FILE environment variable, if it is available. Change the getsize functions to use the BLKGETSIZE64 ioctl on Linux 2.6. Add various portability fixes for lame new versions of glibc, Darwin and GNU/KFreeBSD, as well as removing XSI:ism's. (Addresses Debian Bugs #239934, #264630, #269044, #255589, #289133) Add support for Windows 9x/NT under Cygwin. Updated and clarified various man pages. (Addresses Debian Bugs #236383, #241940, #238741, #242995, #256669, #268148, #256760, #273679) Updated and fixed translations. (Addresses Debian bugs #244105, #262836) Update the rpm spec files so that it works better with Fedora core 2 and RH9. Fixed various Debian packaging issues (see debian/changelog). In particular, fixed the Debian initrd scripts. (#241183, #248050, #253595, #247775) Programmer's notes: ------------------- Fixed various gcc -Wall warnings. The uuid library now has new functions uuid_unparse_upper() and uuid_unparse_lower() which forces the case of the hex digits to be upper case, or lower case. The build process has been sped up by enhancing the subst program to update the modtime on the generated files even when the generated file hasn't changed. The uuid library now uses C99 stdint.h types instead of custom types. Updated config.guess and config.sub with newer versions from the FSF. Removed out of date .cvsignore files from the source distribution. The ext2fs_unlink() function will return an error if both the name and inode number are unspecified, to avoid doing something surprising (such as unconditionally deleting the first directory entry). Directory entries are now deleted by coalescing them with the previous directory entry if possible, to avoid directory fragmentation. This is not an issue with the e2fsprogs suite, but may be a problem for some of the users of libext2fs, such as e2tools. Add support for version numbers of the form "1.36-rc1". Fix build of mke2fs.static. Add basic ext2fs library support for large (EA in inode) inodes. The test_io mechanism can now abort after n reads or writes to a particular block. The block is specified by TEST_IO_BLOCK environment variable, and the read/write count by the TEST_IO_READ_ABORT and TEST_IO_WRITE_ABORT environment variables. The block data is now only dumped if the 0x10 bit is set in TEST_IO_FLAGS. UUID_DEFINE() in the uuid library now creates a static variable, with __attribute__ ((unused)) if we are using GCC, so that UUID_DEFINE can be used in header files. Add support for the install-strip and install-shlibs-strip targets, as suggested by the GNU coding guidelines. "make install" no longer strips the binaries which are installed. Remove support for the --enable-old-bitops configure option which was only for very old sparc systems. Remove support for --enable-clear-htree; this was only needed during the early development of the htree patch. Use Linux-kernel-style makefile output so it is easier to see compiler warnings. Update gettext files to version 0.14.1. Update to use autoconf 2.5x. Improved support for compiling e2fsprogs under dietlibc. Make e2fsprogs portable to Solaris and FreeBSD systems. Add blkid_verify(), blkid_get_library_version(), and blkid_parse_version_string() functions to the blkid library. Add pkg-config files for e2fsprogs's libraries. Fix "make uninstall" to so that it removes everything that is installed. Add a configure --enable-maintainer-mode option which enables the makefile rules to rebuild the configure script from configure.in, and to rebuild the .gmo files in po directory. Drop the sparc assembly bitwise operations; it's less efficient than the GCC 3.4 compile code and triggers compiler warnings on sparc64. Thanks to Matthias Andree for his analysis and suggestions. (Addresses Debian Bug #232326)