| E2fsprogs 1.07 (March 9, 1997) |
| ============================== |
| |
| E2fsck is now uses much less memory when checking really large |
| filesystems (or rather, filesystems with a large number of inodes). |
| Previously a filesystem with 1 million inodes required 4 megabytes of |
| memory to store inode count statistics; that storage requirement has |
| now been reduced to roughly half a megabyte. |
| |
| E2fsck can now properly deal with bad blocks appearing inside the |
| inode table. Instead of trying to relocate the inode table (which |
| often failed because there wasn't enough space), the inodes in the bad |
| block are marked as in use. |
| |
| E2fsck will automatically try to use the backup superblocks if the |
| primary superblocks have a bad magic number or have missing meta-data |
| blocks (or meta-data blocks which are out of range). |
| |
| E2fsck's pass 3 has been made more efficient; most noticeable on |
| filesystems with a very large number of directories. |
| |
| Completely revamped e2fsck's system of printing problem reports. It |
| is now table driven, to make them more easily customizable and |
| extendable. Error messages which can be printed out during preen mode |
| are now one line long. |
| |
| Fixed e2fsck's filesystem swapping code so that it won't try to swap |
| fast symbolic links or deleted files. |
| |
| Fixed e2fsck core dumping when fixing a filesystem which has no |
| directories (not even a root directory). |
| |
| Added a check to e2fsck to make sure that the length of every |
| directory entry is a multiple of 4 (since the kernel complains if it |
| isn't). |
| |
| Added a check to e2fsck to make sure that a directory entry isn't a |
| link to the root directory, since that isn't allowed. |
| |
| Added a check to e2fsck to now make sure the '.' and '..' directory |
| entries are null terminated, since the 2.0 kernel requires it. |
| |
| Added check to write_bitmaps() to make sure the superblock doesn't get |
| trashed if the inode or block bitmap is marked as being block zero. |
| |
| Added checking of the new feature set fields in the superblock, to |
| avoid dealing with new filesystem features that this package wasn't |
| set up to handle. |
| |
| Fixed a fencepost error in ext2fs_new_block() which would occasionally |
| try to allocate a block beyond the end of a filesystem. |
| |
| When the UUID library picks a random IEEE 802 address (because it |
| can't find one from a network card), it sets the multicast bit, to |
| avoid conflicting with a legitimate IEEE 802 address. |
| |
| Mke2fs now sets the root directory's owner to be the real uid of the |
| user running mke2fs. If the real uid is non-zero, it also sets |
| the group ownership of the root directory to be the real group-id of |
| the user running mke2fs. |
| |
| Mke2fs now has more intelligent error checking when it is given a |
| non-existent device. |
| |
| When badblocks is given the -vv option, it now updates the block that |
| it is currently testing on every block. |
| |
| Fixed a bug in fsck where it wouldn't modify the PATH environment |
| currently correctly if PATH wasn't already set. |
| |
| Shared libraries now built with dependencies. This allows the shared |
| library files to be used with dlopen(); it also makes the transition |
| to libc 6 easier, since ld.so can tell which libc a particular shared |
| library expects to use. |
| |
| Programmer's notes: |
| ------------------- |
| |
| Added new abstraction (defined in dblist.c) for maintaining a list of |
| blocks which belongs to directories. This is used in e2fsck and other |
| programs which need to iterate over all directories. |
| |
| Added new functions which test to see if a contiguous range of blocks |
| (or inodes) are available. (ext2fs_*_bitmap_range). |
| |
| Added new function (ext2_inode_has_valid_blocks) which returns true if |
| an inode has valid blocks. (moved from e2fsck code). |
| |
| Added new function (ext2fs_allocate_tables) which allocates the |
| meta-data blocks as part of initializing a filesystem. (moved from |
| mke2fs code). |
| |
| Added a new I/O manager for testing purposes. It will either allow a |
| program to intercept I/O requests, or print debugging messages to |
| trace the activity of a program using the I/O manager. |
| |
| The badblocks_list functions now store the bad blocks in a sorted |
| order, and use a binary search to speed up badblocks_list_test. |
| |
| The inode scan function ext2fs_get_next_inode() may now return a soft |
| error returns: MISSING_INODE_TABLE and BAD_BLOCK_IN_INODE_TABLE in |
| those cases where part of an inode table is missing or there is a bad |
| block in the inode table. |
| |
| Added a new function (ext2fs_block_iterate2) which adds new arguments to |
| the callback function to return a pointer (block and offset) to the |
| reference of the block. |
| |
| Added new function (ext2fs_inode_scan_goto_blockgroup) which allows an |
| application to jump to a particular block group while doing an inode |
| scan. |
| |
| The badblocks list functions were renamed from badblocks_* to |
| ext2fs_badblocks_*. Backwards compatibility functions are available |
| for now, but programs should be modified to use the new interface. |
| |
| Some of the library functions were reorganized into separate files to |
| reduce the size of some programs which statically link against the |
| ext2 library. |
| |
| Put in some miscellaneous fixes for the Alpha platform. |
| |