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