1E2fsprogs 1.20 (May 20, 2001) 2============================= 3 4Add support for replaying the ext3 journal purely in user mode, 5including handling the orphaned inode list. Used code contributed by 6Andreas Dilger, with bug fixes and the orphaned inode handling done 7by Theodore Ts'o. 8 9The mke2fs and tune2fs programs can create or modify a filesystem to 10include an ext3 journal. Tune2fs also can be used to remove an ext3 11journal from a filesystem. 12 13E2fsck will now check for the existence of a linked list of orphan 14inodes in the superblock, and clear those inodes before starting the 15rest of the filesystem check (but after the journal playback). 16 17E2fsck now validates the file descriptor passed to the -C option, 18which saves against the completion bar getting written to an 19unexpected location, such as the disk being checked. (Debian 20bug/wishlist #55220) 21 22E2fsck will now bump the filesystem revision number from zero to one 23if any of the compatibility bits are set. 24 25Fixed a bug where a badly corrupted directory on a big endian system 26could cause e2fsck to die with a bus error. The 27ext2fs_read_dir_block() and ext2fs_process_dir_block() functions in 28the ext2 library now does alignment sanity checks on the rec_len field 29of the directory entry before using it. 30 31The ext2 library has been enhanced to make tune2fs safe to run on 32mounted filesystems. (Users could usually get away with using tune2fs 33on mounted filesystems before, but with the advent of ext3 and 34journalling, it became important to make tune2fs was *really* safe for 35use even when the filesystem being modified is mounted.) E2label is 36now implemented by tune2fs using an argv[0] dispatch, so that e2label 37is also now safe for use on mounted filesystems. 38 39Added a new program, e2image, which creates a backup of critical ext2 40filesystem data structures. The generated image file can be examined 41using dumpe2fs and debugfs. In the future, e2fsck will be able to use 42the image file to help recover very badly damaged filesystems. 43 44Fixed a number of LFS bugs in e2fsck; very, very large (> 2**42) files 45no longer cause e2fsck to bomb out. Also treat files > 2GB as being 46large file when deciding whether or not the filesystem has large files. 47 48Fixed lsattr and chattr so that they work correctly on large files. 49(Fixes Debian bug #72690.) 50 51Removed limitation in get_device_size() which imposed a one terabyte 52filesystem limitation. (Most 2.2 kernels still have a signed int 53problem which cause 1 TB block device limitation. Fortunately, the 54kernel patches to fix this are much easier than fixing the 2TB 55limitation in the kernel. :-) 56 57A max_mount_count of zero is now treated as if no mount count were 58set. (Previously, no mount count was indicated by using -1, and a 59mount count of zero caused e2fsck to always be run.) 60 61Mke2fs supports two new filesystem types largefile and largefile4. 62 63Mke2fs now adds some randomness in s_max_mount_count so that multiple 64filesystems won't be all checked at the same time under normal 65operations. 66 67Fixed bug in the progress bar printing code which could cause e2fsck 68to core dump on an illegal filesystem. 69 70Fixed bug in fsck which could allow more than one instance of e2fsck 71to be printing a progress bar. (Debian bug #65267) 72 73Fsck using a UUID or a LABEL specifier will work even if devfs is 74compiled into the kernel and not mounted. If the pathnames in 75/proc/partitions are incorrect, fsck will search /dev for the correct 76device (using the new ext2fs_find_block_device library function). 77Fsck now also checks the RAID devices first so that they are properly 78found when they are in use. Support has also been added to support 79additional IDE disks and the DAC 960 device names. (Debian bug #94159) 80 81Fixed a bug in fsck which caused it not deal properly with 16 82byte long filesystem labels. 83 84Fsck's -t option has been made a lot more flexible. The semantics for 85what happens if a comma-separated list to fsck has been regularized, 86and it is now possible to filter what filesystems will get checked 87based what is in the filesystem's fstab entry's option field. (Debian 88bug #89483.) 89 90The dumpe2fs program can now print out the group description 91information in hex, and also prints the location of the superblock and 92block group descriptor for those block groups that have them. 93 94Mke2fs now clears the ext2 superblock before it starts creating a 95filesystem, so that the superblock magic number is only written if the 96filesystem creation process successfully completes. 97 98The debugfs program's stat command now pretty-prints the blocks used 99by an inode so that it's more compact and informative. 100 101The debugfs stats command now uses the same libe2p code (which is used 102by dumpe2fs) to print the superblock header information. This is more 103complete, and it avoids a bit of code duplication. 104 105Added a new debugfs command, set_super_value (ssv) which allows the 106user to set arbitrary superblock fields. 107 108Debugfs was extended to support inode numbers in hex (by prefixing 109them with 0x), and so that modify_inode can set the inode generation 110number. Also, there is now a new function command called logdump 111which will dump an ext3 journal. 112 113Fixed a bug in debugfs so that quitting out of the pager doesn't kill 114debugfs. 115 116Debugfs's dump command now stops immediately upon reporting a disk 117read error. (Fixed a bug in ext2fs_file_read library routine which 118caused debugfs not to stop.) (Debian bug #79163) 119 120On systems with /proc/mounts (mainly Linux systems), /proc/mounts is 121checked before /etc/mtab is used, since /proc/mounts is more likely to 122be accurate. 123 124Added portability fixes for Solaris and Linux/ia64. 125 126Various manual pages were clarified and cleaned up. (Fixed debian 127bugs #63442, #67446, and #87216) 128 129 130Programmer's notes: 131------------------- 132 133The e2fsck message printer now supports %Iu and %Ig, which will print 134out the inode's user and group owners, respectively. 135 136E2fsprogs now includes its own version of include/linux/ext2_fs.h, so 137that no longer dependent on the system having the correct version of 138the kernel header files. 139 140Added a new function to libext2, ext2fs_find_block_device(), which 141searches the system (i.e., /dev, /devfs, /devices) for a pathname to a 142device given its device number. 143 144Added a new function to libext2, ext2fs_sync_device, which centralizes 145all of the places which might try to use the BLKFLSBUF or FDFLUSH 146ioctls (and usually failing to define them since the system header 147files don't usually do this for us, and we're trying to avoid usage of 148kernel include files now). 149 150Added new utility programs in tests/progs: random_exercise and 151hold_inode. They aren't built by default; they're useful for 152exercising ext3 filesystem code. 153 154Added a new ext2 filesystem flag, EXT2_FLAG_SUPER_ONLY, which causes 155the filesystem close functions to only update the superblock, and to 156not touch the block group descriptors. Needed by tune2fs when 157modifying a mounted filesystem. 158 159Got rid of struct ext2fs_sb and replaced it with the standard struct 160ext2_super_block from include/linux/ext2_fs.h. Note: this may break 161source (but not binary) compatibility of some users of the ext2 162library. Those applications should just simply do a global search and 163replace of struct ext2fs_sb with struct ext2_super_block, and include 164the new header file <ext2fs/ext2_fs.h> which defines it. 165 166The ino_t type has been renamed ext2_ino_t to protect applications 167that attempt to compile -D_FILE_OFFSET_BITS=64, since this 168inexplicably changes ino_t(!?). So we use ext2_ino_t to avoid an 169unexpected ABI change. 170 171The Makefiles have been reworked so that "make check" can be run from 172the top-level Makefile. 173 174Fix general gcc -Wall complaints and removed dead code. 175 176Remove use of NOARGS, because we assume everyone does ANSI C these 177days. 178 179Added build-rpm script from sct. 180 181New functions ext2fs_image_{inode,super,bitmap}_{read,write} added 182to support e2image. 183 184New function ext2fs_flush_icache which must be called if the 185application program modifies the inode table blocks without going 186through ext2fs_write_inode() interface. 187 188New ext2fs_check_mount_point() function, which will return the mount 189point of a device if mounted. 190 191The io_channel abstraction now has an optional interface, 192io_channel_write_range, which allows specific byte ranges to be 193written. 194 195The unix_io IO channel now supports write-through caching, so that 196journal creation is more efficient. 197 198Added x86 assembly language routines to support byte swapping, to 199reduce executable size. 200 201Fixed bug in the utility program subst so that it's possible to 202replace a substitution variable with a zero-length string. 203 204Fixed numbering e2fsck pass1 problem numbers; an extra zero had 205slipped into some of the problem number. 206 207