1E2fsprogs 1.12 (July 9, 1998) 2================================== 3 4E2fsprogs now works with glibc (at least with the version shipped with 5RedHat 5.0). The ext2fs_llseek() function should now work even with 6i386 ELF shared libraries and if llseek() is not present. We also 7explicitly do a configure test to see if (a) llseek is in libc, and 8(b) if llseek is declared in the system header files. (See standard 9complaints about libc developers don't understand the concept of 10compatibility with previous versions of libc.) 11 12The ext2fs library now writes out the block group number in each of 13the superblock copies. This makes it easier to automatically 14determine the starting block group of the filesystem when the block 15group information is trashed. 16 17Added support for the EXT2_FEATURE_INCOMPAT_FILETYPE feature, 18which means that e2fsprogs will ignore the high 8 bits of the 19directory entry's name_len field, so that it can be used for other 20purposes. 21 22Added support for the EXT2_FEATURE_RO_COMPAT_LARGE_FILE feature. 23E2fsprogs will now support filesystems with 64-bit sized files. 24 25Added support for the EXT2_FEATURE_COMPAT_DIR_PREALLOC feature. 26 27Added new program "e2label", contributed by Andries Brouwer. E2label 28provides an easy-to-use interface to modify the filesystem label. 29 30Fixed bug so that lsattr -v works instead of producing a core dump. 31 32Fixed a minor bug in mke2fs so that all groups with bad superblock 33backup blocks are printed (not just the first one). 34 35Mke2fs will check the size of the device, and if the user specifies a 36filesystem size larger than the apparent size of the device it will 37print a warning message and ask if the user wants to proceed. 38 39E2fsck has a new option -C, which sends completion information to the 40specified file descriptor. For the most part, this is intended for 41programs to use, although -C 0 will print a spinning character to the 42stdout device, which may be useful for users who want to see something 43happening while e2fsck goes about its business. 44 45Fixed a bug in e2fsck which could cause a core dump when it needs to 46expand the /lost+found directory, and sometimes the bitmaps haven't 47been merged in. Also fixed a related bug where ext2fs_write_dir_block 48was used to write out a non-directory block. (Which would be bad on a 49non-Intel platform with byte swapping going on.) 50 51Fixed bug in e2fsck where it would print a "programming error" message 52instead of correctly identifying where a bad block was in used when 53the bad block was in a non-primary superblock or block group 54descriptor. Also fixed a related bug when sparse superblocks are in 55use and there is a bad block where a superblock or block group 56descriptor would have been in a group that doesn't include a 57superblock. 58 59Fixed a bug in e2fsck (really in libext2fs's dblist function) where if 60the block group descriptor table is corrupt, it was possible to try to 61allocate a huge array, fail, and then abort e2fsck. 62ext2fs_get_num_dirs() now sanity checks the block group descriptor, 63and substitutes reasonable values if the descriptors are obviously bogus. 64 65If e2fsck finds a device file which has the immutable flag set and the 66i_blocks beyond the normal device number are non-zero, e2fsck will 67offer to remove it, since it's probably caused by garbage in the inode 68table. 69 70When opening a filesystem, e2fsck specially checks for the EROFS error 71code, and prints a specific error message to the user which is more 72user friendly. 73 74If the filesystem revision is too high, change the e2fsck to print 75that this is either because e2fsck is out of date, or because the 76superblock is corrupt. 77 78E2fsck now checks for directories that have duplicate '.' and '..' 79entries, and fixes this corruption. 80 81E2fsck no longer forces a sync of the filesystem (with attendant sleep 82calls) at all times. The ext2fs_flush() function now performs a sync 83only if it needed to write data blocks to disk. 84 85Fixed a minor bug in e2fsck's pass1b's file cloning function, where 86certain errors would not be properly reported. 87 88Updated and expanded a few points in the man pages which users 89complained weren't explicit enough. 90 91Added special case byte-swapping code if compiling on the PowerPC, to 92accommodate the strange big-endian variant of the ext2 filesystem that 93was previously used on the PowerPC port. 94 95 96Programmer's notes: 97------------------- 98 99Removed C++ keywords from the ext2fs libraries so that it could be 100compiled with C++. 101 102E2fsck's internal organization has now been massively reorganized so 103that pass*.c don't have any printf statements. Instead, all problems 104are reported through the fix_problem() abstraction interface. E2fsck 105has also been revamped so that it can be called as a library from a 106application. 107 108Added new fileio primitives in libext2fs for reading and writing 109files on an unmounted ext2 filesystem. This interface is now used by 110debugfs. 111 112Added a new libext2fs function for mapping logical block numbers of 113a file to a physical block number. 114 115Added a new libext2fs function, ext2fs_alloc_block(), which allocates 116a block, zeros it, and updates the filesystem accounting records 117appropriately. 118 119Added a new libext2fs function, ext2fs_set_bitmap_padding(), which 120sets the padding of the bitmap to be all one's. Used by e2fsck pass 5. 121 122The libext2fs functions now use a set of memory allocation wrapper 123functions: ext2fs_get_mem, ext2fs_free_mem, and ext2fs_resize_mem, 124instead of malloc, free, and resize. This makes it easier for us to 125be ported to strange environments where malloc, et. al. aren't 126necessarily available. 127 128Change the libext2fs function to return ext2-specific error codes 129(EXT2_DIR_EXISTS and EXT2_DB_NOT_FOUND, for example) instead of using 130and depending on the existence of system error codes (such as EEXIST 131and ENOENT). 132 133Renamed io.h to ext2_io.h to avoid collision with other OS's header 134files. 135 136Add protection against ext2_io.h and ext2fs.h being included multiple 137times. 138 139The types used for memory lengths, etc. have been made more portable. 140In general, the code has been made 16-bit safe. Added Mark 141Habersack's contributed DOS disk i/o routines. 142 143Miscellaneous portability fixes, including not depending on char's 144being signed. 145 146The io_channel structure has a new element, app_data, which is 147initialized by the ext2fs routines to contain a copy of the filesystem 148handle. 149 150ext2fs_check_directory()'s callback function may now return the error 151EXT2_ET_CALLBACK_NOTHANDLED if it wishes ext2fs_check_directory() to 152really do the checking, despite the presence of the callback function. 153 154