1E2fsprogs 1.07 (March 9, 1997) 2============================== 3 4E2fsck is now uses much less memory when checking really large 5filesystems (or rather, filesystems with a large number of inodes). 6Previously a filesystem with 1 million inodes required 4 megabytes of 7memory to store inode count statistics; that storage requirement has 8now been reduced to roughly half a megabyte. 9 10E2fsck can now properly deal with bad blocks appearing inside the 11inode table. Instead of trying to relocate the inode table (which 12often failed because there wasn't enough space), the inodes in the bad 13block are marked as in use. 14 15E2fsck will automatically try to use the backup superblocks if the 16primary superblocks have a bad magic number or have missing meta-data 17blocks (or meta-data blocks which are out of range). 18 19E2fsck's pass 3 has been made more efficient; most noticeable on 20filesystems with a very large number of directories. 21 22Completely revamped e2fsck's system of printing problem reports. It 23is now table driven, to make them more easily customizable and 24extendable. Error messages which can be printed out during preen mode 25are now one line long. 26 27Fixed e2fsck's filesystem swapping code so that it won't try to swap 28fast symbolic links or deleted files. 29 30Fixed e2fsck core dumping when fixing a filesystem which has no 31directories (not even a root directory). 32 33Added a check to e2fsck to make sure that the length of every 34directory entry is a multiple of 4 (since the kernel complains if it 35isn't). 36 37Added a check to e2fsck to make sure that a directory entry isn't a 38link to the root directory, since that isn't allowed. 39 40Added a check to e2fsck to now make sure the '.' and '..' directory 41entries are null terminated, since the 2.0 kernel requires it. 42 43Added check to write_bitmaps() to make sure the superblock doesn't get 44trashed if the inode or block bitmap is marked as being block zero. 45 46Added checking of the new feature set fields in the superblock, to 47avoid dealing with new filesystem features that this package wasn't 48set up to handle. 49 50Fixed a fencepost error in ext2fs_new_block() which would occasionally 51try to allocate a block beyond the end of a filesystem. 52 53When the UUID library picks a random IEEE 802 address (because it 54can't find one from a network card), it sets the multicast bit, to 55avoid conflicting with a legitimate IEEE 802 address. 56 57Mke2fs now sets the root directory's owner to be the real uid of the 58user running mke2fs. If the real uid is non-zero, it also sets 59the group ownership of the root directory to be the real group-id of 60the user running mke2fs. 61 62Mke2fs now has more intelligent error checking when it is given a 63non-existent device. 64 65When badblocks is given the -vv option, it now updates the block that 66it is currently testing on every block. 67 68Fixed a bug in fsck where it wouldn't modify the PATH environment 69currently correctly if PATH wasn't already set. 70 71Shared libraries now built with dependencies. This allows the shared 72library files to be used with dlopen(); it also makes the transition 73to libc 6 easier, since ld.so can tell which libc a particular shared 74library expects to use. 75 76Programmer's notes: 77------------------- 78 79Added new abstraction (defined in dblist.c) for maintaining a list of 80blocks which belongs to directories. This is used in e2fsck and other 81programs which need to iterate over all directories. 82 83Added new functions which test to see if a contiguous range of blocks 84(or inodes) are available. (ext2fs_*_bitmap_range). 85 86Added new function (ext2_inode_has_valid_blocks) which returns true if 87an inode has valid blocks. (moved from e2fsck code). 88 89Added new function (ext2fs_allocate_tables) which allocates the 90meta-data blocks as part of initializing a filesystem. (moved from 91mke2fs code). 92 93Added a new I/O manager for testing purposes. It will either allow a 94program to intercept I/O requests, or print debugging messages to 95trace the activity of a program using the I/O manager. 96 97The badblocks_list functions now store the bad blocks in a sorted 98order, and use a binary search to speed up badblocks_list_test. 99 100The inode scan function ext2fs_get_next_inode() may now return a soft 101error returns: MISSING_INODE_TABLE and BAD_BLOCK_IN_INODE_TABLE in 102those cases where part of an inode table is missing or there is a bad 103block in the inode table. 104 105Added a new function (ext2fs_block_iterate2) which adds new arguments to 106the callback function to return a pointer (block and offset) to the 107reference of the block. 108 109Added new function (ext2fs_inode_scan_goto_blockgroup) which allows an 110application to jump to a particular block group while doing an inode 111scan. 112 113The badblocks list functions were renamed from badblocks_* to 114ext2fs_badblocks_*. Backwards compatibility functions are available 115for now, but programs should be modified to use the new interface. 116 117Some of the library functions were reorganized into separate files to 118reduce the size of some programs which statically link against the 119ext2 library. 120 121Put in some miscellaneous fixes for the Alpha platform. 122 123