RELEASE-NOTES revision 67b3721dc4de9d6441a00eceba6fd57590aa0004
1E2fsprogs 1.42.5 (July 29, 2012) 2================================ 3 4Fixed a bug with mke2fs where if there is only 8 inodes per block 5group, the calculation of the number of uninitialized inodes in the 6first block group would go negative. This resulted in "mke2fs -N 256 7-t ext4 /tmp/foo.img 256m" trying to write so many blocks that /tmp 8would run out of space. (Addresses Sourceforge Bug: #3528892) 9 10Fixed a bug in how e2fsck would uniquify directory entry names. 11(AddressesSourceforge Bug: #3540545) 12 13Previously, e2fsck would only allow a mounted file system to be 14checked if it was the root file system and it was mounted read-only. 15Now it will allow any file system mounted read-only to be checked if 16the -f option is specified. This makes it easier to test how e2fsck 17handles checking file systems which are mounted without having to test 18on the root file system. 19 20Fixed a problem if e2fsck where if the root file system is mounted 21read-only, e2fsck would not clear an error indication in the journal 22superblock. Combined with a kernel bug, this would cause the e2fsck 23to check the file system after every single boot. 24 25The e4defrag program can now handle device symlinks, such as 26/dev/mapper/testvg-testlv, instead of insisting on a less 27human-friendly name such as /dev/dm-2. (Addresses Red Hat Bugzilla: 28#707209) 29 30Fixed filefrag so it will not crash with a segfault on files from a 31virtual file system such as /proc. (e.g., "filefrag 32/proc/partitions") 33 34Fixed filefrag so that it correctly reports the number of extents. 35(Addresses Red Hat Bugzilla: #840848) 36 37Fixed a file descriptor leak in logsave which could cause it to hang. 38(Addresses Debian Bug: #682592) 39 40Fixed e2fsck so that the file system is marked as containing an error 41if the user chooses not to fix the quota usage information. 42 43Fixed tune2fs so that it correctly removes the quota feature when the 44last quota inode is removed. 45 46Fix tune2fs so that after removing a quota inode, the block bitmap is 47updated; otherwise, e2fsck would complain after running 'tune2fs -O 48^quota <dev>'. 49 50Fix tune2fs so that when converting a file system from using legacy 51quota files to the new quota file system feature with hidden quota 52files, the accounting for these files is handled correctly so that 53e2fsck doesn't complain. 54 55Improved e2fsck's verbose reporting statistics, and allow the more 56verbose reporting to be enabled via /etc/e2fsck.conf. 57 58Fixed various Debian Packaging Issues (Addresses Debian Bug #678395) 59 60Updated/fixed various man pages. (Addresses Debian Bugs: #680114) 61 62 63Programmer's Notes 64------------------ 65 66Fixed portability problems on other operating systems (e.g., Hurd and 67FreeBsd) caused by the attempted inclusion of <sys/quota.h>. 68 69Make sure that shared libraries link with the shared libraries built 70in the build tree, instead of the system provided libraries. 71Previously, libraries and executables were linked with the system 72libraries if present, and possibly using static archives instead of 73shared libraries. This was also problematic since if libext2fs.so is 74linked with a static libcom_err.a from system, the build system would 75attempt to link without -lpthread. (Addresses Sourceforge Bug: 76#3542572) 77 78 79E2fsprogs 1.42.4 (June 12, 2012) 80================================ 81 82Fixed more 64-bit block number bugs (which could end up corrupting 83file systems!) in e2fsck, debugfs, and libext2fs. 84 85Fixed e2fsck's handling of the journal's s_errno field. E2fsck was 86not properly propagating the journal's s_errno field to the superblock 87field; it was not checking this field if the journal had already been 88replayed, and if the journal *was* being replayed, the "error bit" 89wasn't getting flushed out to disk. 90 91Fixed a false positive complaint by e2fsck if all of the extents in 92the last extent tree block are uninitalized and located after the end 93of the file as defined by i_size. 94 95The dumpe2fs will now display the journal's s_errno field if it is 96non-zero, and it will also display the journal's 64-bit feature flag 97if present. 98 99Fix e2fsck so that it always opens the device file in exclusive mode 100when it might need to modify the file system, and never if the -n 101option is specified. (Previously, there were a few corner cases where 102it might get things wrong in either direction.) 103 104E2fsck now correctly truncates or deallocates extent-mapped inodes on 105the orphan list. The root cause was a bug in libext2fs's block 106iterator which could end up skipping an extent when the last block in 107an extent is removed, causing the current extent to be removed from 108the extent tree. 109 110E2fsck now correctly sets the global free block and inode counts when 111truncating or removing inodes on the orphan list in preen mode. 112Previously, it would leave these values would be set incorrectly, 113which is largely a cosmetic issue since the kernel no longer pays 114attention to those fields, but it can cause spurious complaints in 115subsequent e2fsck runs. 116 117Fix i_blocks accounting when the libext2fs library needs to add or 118remove an extent tree block on bigalloc file systems. 119 120The lsattr and chattr programs now support the No_COW flag for the 121benefit of btrfs. 122 123Debugfs now interprets date strings of the form @ddd as ddd seconds 124after the beginning of the epoch. This is handy when setting an inode 125number into the d_time field when debugging orphan list handling. 126 127Fix a precedence bug with built-in quota support which might result in 128e2fsck paying attention to the quota inode field even if the built-in 129quota feature flag is not set. Fortunately, in practice that 130superblock field should be zero for non-built-in quota file systems, 131so it's unlikely this bug would have caused problems. 132 133Updated/fixed various man pages. (Addresses Debian Bugs: #674453, 134#674694) 135 136Programmer's Notes 137------------------ 138 139The regression test suite can now run the integration tests in the 140tests directory in parallel, via "make -jN check". 141 142Add new test, f_zero_extent_length which tests e2fsck's handling of 143the case where all of the extents in the last extent tree block are 144uninitialized extents after i_size. 145 146Add a new test, f_jnl_errno, which checks handling of an error 147indication set in the journal superblock. 148 149Fix the test f_jnl_64bit so that it properly checks e2fsck's handling 150of a 64-bit journal. 151 152Add two tests, f_orphan_indirect_inode and f_orphan_extent_inode which 153tests e2fsck's handling of orphan inodes in preen mode, and truncation 154of extent inodes on the orphan list. 155 156Fixed more OS X portability issues. 157 158 159E2fsprogs 1.42.3 (May 14, 2012) 160=============================== 161 162Fix a bug in the Unix I/O manager which could cause corruption of file 163systems with more than 16TB when e2fsprogs is compiled in 32-bit mode 164(i.e., when unsigned long is 32-bits). Also fix a bug which caused 165dumpe2fs to incorrectly display block numbers > 32-bits. 166 167Improve the support for integrated quota files (where quota is a first 168class supported feature using hidden files in the ext4 file system). 169Previously the quota file was getting rewritten even when it was not 170necessary, and e2fsck would erroneously try to hide quota files which 171were already hidden. 172 173Quiet complaints in e2fsck when the total free blocks or inodes are 174incorrect in the superblock after an system crash, since we don't 175update nor depend on the superblock summaries at each commit boundary. 176 177Fixed a regression introduced in 1.42.2 which would cause applications 178outside of e2fsprogs which did not pass the EXT2_FLAG_64BIT (and so 179would were still using the legacy 32-bit bitmaps) to crash. This was 180due to missing 32-bit compat code in side the function 181ext2fs_find_first_zero_generic_bmap(). (Addresses Red Hat Bugzilla: 182#808421) 183 184Fix a bug which would cause mke2fs to fail creating the journal if 185/etc/mtab and /proc/mounts are missing. (Addresses Sourceforge Bug: 186#3509398) 187 188Updated/fixed various man pages. 189 190Update Czech, Dutch, French, German, Polish, Sweedish, and Vietnamese 191translations 192 193Fixed various Debian Packaging issues. 194 195 196Programmer's Notes 197------------------ 198 199Change the nonsensically wrong types in the function signature of the 200inline function ext2fs_find_first_zero_block_bitmap2(). This was 201caused by a cut and paste error; fortunately no code in e2fsprogs used 202this inline function, and there are any users of this functions 203outside of e2fsprogs. 204 205Add support for systems which have valloc(), but which do have 206posix_memalign() nor memalign() (such as MacOS 10.5). 207 208Refactor and clean up the allocation of aligned buffers for Direct I/O 209support. Previously some allocations were requesting a greater 210alignment factor that what was strictly necessary. Also optimize 211reading and writing bitmaps using Direct I/O when the size of the 212bitmap did not fully cover the file system blocksize. 213 214Reserve the codepoints for the INCOMPAT features LARGEDATA and 215INLINEDATA. 216 217Improved the regression test suite by adding some new integration 218tests (f_jnl_32bit, f_jnl_64bit) which detect breakage of the on-disk 219jbd2 format, as well as f_eofblocks which tests the new handling of 220uninitialized and initialized blocks beyond i_size. Also add a new 221unit test which verifies 32-bit bitmaps support and the new 222find_first_zero primitives. 223 224Add a few dependencies to fix parallel (make -j) builds. 225 226Removed bash'isms which were breaking the regression test suite on 227systems where /bin/sh is not bash. 228 229The config.guess and config.sub have been updated to the 2012-02-10 230version. 231 232Fix a portability problem caused by assuming the present of mntent.h 233means that setmntent() exists. Instead, explicitly test for this in 234the configure script. 235 236If the sys/signal.h header file does not exist, don't try to include 237it, since it's not available on all systems. 238 239Add support for systems that do not support getpwuid_r() 240 241The configure script now supports a new option, 242--enable-relative-symlinks, which will install relative symlinks for 243the ELF shared library files. (Addresses Sourceforge Bug: #3520767). 244 245When building BSD shared libraries make sure the LDFLAGS variable is 246passed to the linker. Fixing this allows, for example, e2fsprogs to 247be built in 32-bit mode on Mac OS X Lion (Addresses Sourceforge Bug: 248#3517272) 249 250Fix gcc -Wall nitpicks 251 252 253E2fsprogs 1.42.2 (March 27, 2012) 254================================= 255 256The resize2fs program uses much less CPU and is much faster for very 257large file systems. (Addresses Debian Bug: #663237) 258 259The seti and freei commands in debugfs can now take an optional length 260argument to set and clear a contiguous range of inodes. 261 262E2fsck will now make explicit checks for the EOFBLOCKS_FL, since we 263plan to remove support for it from the kernel file system driver. It 264really wasn't very useful and was causing more problems than it 265solves. Since e2fsck will complain if inodes that should have 266EOFBLOCKS_FL do not have the flag set, we are going to remove this 267check from e2fsprogs first, and then only remove the flag from the 268kernel much later. 269 270The mke2fs program can now use direct I/O via "mke2fs -D". This will 271slow down the mke2fs, but it makes it more polite on a loaded server 272by limiting the amount of memory that gets dirtied by mke2fs when it 273is using buffered I/O. 274 275E2fsck was needlessly closing and re-opening the file system as a side 276effect of adding Multiple Mount Protection (MMP). This isn't 277necessary for non-MMP file systems, so drop it. 278 279Print errors returned by ext2fs_open2() and ext2fs_check_desc() so we 280can more easily diagnose memory allocation failures caused by 281insufficient memory. E2fsck will now abort if there are memory 282allocation failures when the file system is initially opened and 283during the block group descriptor checks. (Addresses Google Bug: 284#6208183) 285 286If there are incorrect block group checks, e2fsck will now report the 287incorrect and corrected checksum values. 288 289The e2fsck progam can now write log files containing the details of 290the problems that were found and fixed directly, via configuration 291parameters in /etc/e2fsck.conf. 292 293Added the ability to limit the number of messages reported by e2fsck 294for a given problem type. This avoids a potential bottleneck if there 295is a serial console which can cause a boot sequence to take a long 296time if e2fsck needs to report many, many file system errors. 297 298The dumpe2fs, debugfs, and tune2fs now use rbtree bitmaps, which cause 299them to use much less memory for large file systems. 300 301The dumpe2fs program will now print the expected block group checksum 302if it is incorrect. This helps to diagnose problems caused by 303incorrect block group checksums. 304 305E2fsck now checks for extents with a zero length, since the kernel 306will oops if it comes accross such a corrupted data structure. (See 307https://bugzilla.kernel.org/show_bug.cgi?id=42859) 308 309E2fsck has a number of bugs relating to discard that have been fixed. 310(1) Fixed a bug which could cause e2fsck to discard portions of the 311inode table which were actually in use. (2) E2fsck will now avoid 312using discard if the block device doesn't zero data on discard, since 313otherwise this could cause problems if the file system gets corrupted 314in the future. (3) E2fsck will now avoid using discard when it is run 315in read-only mode. (4) Fixed a bug which caused e2fsck to not issue 316discards in the last block group. 317 318E2fsck's CPU utilization in pass 5 has been optimized, which will 319speed up e2fsck slightly. 320 321E2image will now skip copying uninitialized bitmap and inode table 322blocks. 323 324Fixed mke2fs -S so it does not corrupt the first block group's 325information. 326 327E2fsck will now check the new sysfs interface to determine if we are 328using the battery or AC mains. (Addresses SourceForge Bug: #3439277) 329 330Updated/fixed various man pages. (Addresses Debian Bug: #665427) 331 332Fixed various Debian Packaging issues. (Addresses Debian Bug: #665885) 333 334Programmer's Notes 335------------------ 336 337Fixed various portability issues for non-Linux systems, particularly 338MacOS X, as well as Linux systems running with the just-released glibc 3392.15. 340 341Fix file descriptor leak in ext2fs_close() if the file system with 342uninit_bg is opened read/only with a backup superblock. (Addresses 343SourceForge Bug: #3444351) 344 345Fixed an invalid return in a non-void function in the quota code. 346(Addresses SourceForge Bug: #3468423) 347 348Fixed the debian rules file so that the calls to dpkg-buildflags works 349when the shell is dash. 350 351The debian package build now uses V=1 so that there is more 352information about potential build failures in debian buildd logs. 353 354If the uninit flags get cleared by functions such as 355ext2fs_new_inode() or ext2fs_new_block2(), we now make sure the 356superblock is marked dirty and the block group descriptor checksum is 357updated if necessary. 358 359The debian rules file will now try to load debian/rules.custom of it 360exists. This flie can skip various builds for speed reasons if there 361is no need for the e2fsck-static or udeb packages. Available 362customizations in the rules file includes SKIP_STATIC=yes, 363SKIP_BF=yes, and SKIP_DIETLIBC=yes. 364 365In addition, if the file misc/mke2fs.conf.custom.in exists in the 366source tree, it will be used instead of the standard misc.conf file in 367the upstream sources. This makes it easier for Debian-derived systems 368to distribute a custom mke2fs.conf file without having to worry about 369merge issues if future versions of e2fsprogs makes changes in the 370upstream default version of mke2fs.conf. 371 372 373E2fsprogs 1.42.1 (February 17, 2012) 374=================================== 375 376The mke2fs and e2fsck now use significantly less memory when creating 377or checking very large file systems. This was enabled by adding 378extent-based bitmaps which are stored using a red-block tree, since 379block and inode allocations tend to be contiguous. 380 381The command mke2fs -S is used as a last ditch recovery command to 382write new superblock and block group descriptors, but _not_ to destroy 383the inode table in hopes of recovering from a badly corrupted file 384system. So if the uninit_bg feature is enabled, mke2fs -S will now 385set the unused inodes count field to zero. Otherwise, e2fsck -fy 386after using mke2fs -S would leave the file system completely empty. 387 388Since mke2fs recognizes mke3fs in argv[0] to mean "mkfs.ext3", also 389honor "mke4fs" to work the same as "mke2fs.ext4", since RHEL5 has 390installed an mke2fs binary using that name. 391 392The usage and help messages for the -G, -t and -T options in mke2fs 393have been fixed. 394 395If e2fsck needs to use the backup group descriptors, the 396ext2fs_open2() function clears the UNINIT bits to ensure all of the 397inodes in the file systems get scanned. However, the code which reset 398the UNINIT flags did not also recalculate the checksum, which produced 399many spurious (and scary) e2fsck messages. This has been fixed by 400resetting cheksums when the UNINIT bits are cleared. 401 402Relax a check in e2fsck which required that the block bitmap to be 403initialized when the inode bitmap is in use. This will allow us to 404eventually eliminate code from the kernel which forcibly initialized 405the block bitmap when the inode bitmap is first used, requiring an 406extra journal credit and disk write. (Addresses Google Bug: #5944440) 407 408Make sure rdebugfs (which may be installed setuid or setgid disk) does 409not honor environment variables if euid != uid or egid != gid. 410 411Debugfs's ncheck command has been optimized and now is much more 412robust with faced with corrupted file systems. The ncheck command 413also now has a -c option which will verify the file type information 414in the directory entry to see if matches the inode's mode bits. This 415is extremely useful when trying to use debugsfs to determine which 416parts of the file system metadata can be trusted. 417 418E2image will try to use ftruncate64() to set the i_size for raw 419images, instead of writing a single null byte. This avoid allocating 420an extra block to the raw image, for those file systems and/or 421operating systems that support this. (Linux does.) In addition, fix 422a logic bug that caused the file to not be properly extended if the 423size of the last hole was exactly an multiple of a megabyte. 424 425Fixed a bug in resize2fs where for 1k and 2k file systems, where 426s_first_data_block is non-zero, this wasn't taken into account when 427calculate the minimum file system size for use with the -M option. 428 429Fixed the badblocks program to honor the -s flag when in read-only -t 430mode. (Addresses Debian Bug #646629) 431 432Update Czech, Dutch, French, Polish, and Sweedish translation from the 433Translation Project. 434 435Fixed various Debian Packaging issues so that dpkg-buildflags is used 436if present, which allows e2fsprogs to be built with security hardening 437flags. (Addresses Debian Bugs: #654457) 438 439Programmer's Notes 440------------------ 441 442Fix a bug in ext2fs_clear_generic_bmap() when used for 32-bit bitmaps. 443This was only an issue for programs compiled against e2fsprogs 1.41 444that manipulate bitmaps directly. (Addresses Sourceforge Bugs: 445#3451486) 446 447The libext2fs library now uses sysconf() to fetch the page size, instead 448of the deprecated getpagesize(). 449 450The ext2fs_get_pathname() function will return a partial path if an a 451directory in the path is not a directory, displaying it as an inode 452number in angle brackets instead of giving up and displaying an error. 453This is much more helpful when a user is trying to debug a corrupted 454file system. 455 456Codepoints for the RO_COMPAT_REPLICA feature has been reserved. 457 458Added a new library function, ext2fs_file_get_inode_num(), for use by 459fuse2fs. 460 461Fixed a bug in ext2fs_file_set_size2() so that when it is truncating a 462file, it actually works. 463 464The block iterator now properly honors the BLOCK_ABORT flag for 465extent-based flags. Previously, it didn't, which generally made code 466be less efficient, but it could cause bugs in ext2fs_link(), for 467example, by causing it to insert multiple directory entries. 468 469Fixed an (harmless other than causing a compiler warning) use of an 470uninitialized variable in e2fsck's MMP code. 471 472 473E2fsprogs 1.42 (November 29, 2011) 474================================== 475 476This release of e2fsprogs has support for file systems > 16TB. Online 477resize requires kernel support which will hopefully be in Linux 478version 3.2. Offline support is not yet available for > 16TB file 479systems, but will be coming. 480 481This release of e2fsprogs has support for clustered allocation. This 482reduces the number of block (now cluster) bitmaps by allocating and 483deallocating space in contiguous power-of-2 collections of blocks, 484which are called clustered. This is a file system level feature, 485called 'bigalloc', which must be enabled when the file system is 486initially formatted. It is not backwards compatible with older 487kernels. 488 489Added support for the Multi-Mount Protection (MMP) feature. 490 491E2fsck more efficiently uses scratch files for really big file 492systems. (This is a feature that has to be turned on explicitly; see 493[scratch_files] in the e2fsck.conf man page.) 494 495Fix a bug in e2fsck where if the free blocks and inodes counts are 496incorrect, e2fsck would fix them without printing an error message. 497This would cause a "*** FILE SYSTEM WAS MODIFIED ***" message without 498any explanation of what was fixed. 499 500E2fsck will no longer attempt to clone an extended attribute block in 501pass1b handling if the file system does not support extended 502attributes. 503 504E2fsck will be more careful accidentally asking the user to continue 505if the file system is mounted, so that an escape sequence won't cause 506a false positive. (Addresses Debian Bug: #619859) 507 508E2fsck now uses less cpu time in pass 5 when large portions of the 509bitmaps are uninitialized. 510 511E2fsck will no longer segault when a corrupted file system has a bad 512extent, and removing it leads to a block needing to be deallocated. 513(Addresses SourceForge Bug: #2971800) 514 515E2fsck will catch termination signals (segfaults, bus errors, sigfpe) 516and print debugging information to make it easier to find potential 517problems. 518 519E2fsck will check to see if the bad block inode looks insane, and will 520skip trying to use if it certain fields which should be zero look 521non-zero. This is to avoid a corrupted bad block inode causing e2fsck 522to get confused and do more harm than good. 523 524If e2fsck modifies certain superblock fields which the kernel doesn't 525look at, it will now mark the superblock as dirty without marking the 526file system as changed. This avoids signalling the init scripts that 527a reboot is necessary, since the kernel isn't going to look at those 528fields, so it won't care if they have been changed. 529 530Fixed a bug in the libext2fs library (in the binary search routine of 531the icount abstraction) that could (very, very rarely) cause e2fsck to 532die in the middle of pass 1 or pass 2 processing. 533 534E2fsck will not try to do a discard operation if the -n option was 535specified on the command line. 536 537E2fsck now supports an extended "discard" option which will cause 538e2fsck to attempt discard all unused blocks after a full, successful 539file system check. 540 541E2fsck will check for the bad block inode to make sure it looks sane 542before trusting it, to avoid causing more harm than good to the file 543system. 544 545E2fsck now returns additional status bits in its exit code if it 546aborts early in the e2fsck run. 547 548E2fsck now correctly calculates the maximum file size in the case of 549the huge_file file system feature enabled without extents. 550 551The mke2fs and e2fsck programs now tries to use the punch hole command 552as a "discard" when operating on normal files. 553 554The e2image program now supports the qcow2 format, which is a more 555efficient way of capturing file system dumps. 556 557Mke2fs now supports the [devices] stanza in mke2fs.conf which allows 558per-device defaults to be specified in the configuration file. 559 560Mke2fs now supports the reserved_ratio relation in the [defaults] and 561[fs_types] section in mke2fs.conf. 562 563Mke2fs now creates extent-mapped directories for the root and 564lost+found directories. 565 566Mke2fs will skip zero'ing the journal if the extended option 567"lazy_journal_init" is specified. This can save a lot of time, but it 568does add a small amount of risk if the system crashes before the 569journal is overwritten entirely once. It is epsecially useful for 570testing. 571 572Mke2fs will now create file systems that enable user namespace 573extended attributes and with time- and mount count-based file 574system checks disabled. 575 576Mke2fs will not set a stride or strip size of one block based on block 577device attributes obtained from sysfs. 578 579Mke2fs now displays a progress report during the discard process. 580 581Mke2fs now handles extreme file system parameters correctly which 582previously caused the inodes per group to drop below 8, leading to a 583segfault. (The inodes per group must be a multiple of 8, but the code 584didn't correctly deal with an inodes per group count less than 8.) 585 586Mke2fs and tune2fs previously would give an error if the user tried 587setting the stride and stripe-width parameters to zero; but this is 588necessary to disable the stride and stripe-width settings. So allow 589setting these superblock fields to zero. (Addresses Google Bug: 590#4988557) 591 592Mke2fs now gives a warning if the auto-detected block size exceeds the 593system's page size. 594 595If the enable_periodic_fsck option is false in /etc/mke2fs.conf (which 596is the default), mke2fs will now set the s_max_mnt_count superblock 597field to -1, instead of 0. Kernels older then 3.0 will print a 598spurious message on each mount then they see a s_max_mnt_count set to 5990, which will annoy users. (Addresses Debian Bug: #632637) 600 601The default mke2fs.conf now has entries for "big" and "huge", which 602are needed for very big file systems. 603 604The resize2fs program now has support for a new online resize ioctl 605that can support file systems > 16TB, once it arrives in v3.x kernels. 606 607Fixed bug which caused resize2fs to fail when shrinking an empty file 608system down to its minimal size. (Addresses Sourceforge Bug #3404051) 609 610Fixed tune2fs's mount options parsing. (Addresses Debian Bug: #641667) 611 612Allow tune2fs to remove external journals if the device can not be 613found. 614 615Debugfs's icheck will now correctly find inodes which use the 616searched-for block as an extended attribute block. 617 618Debugfs now has a new "punch" command which remove blocks from the 619middle of an inode. 620 621Debugfs now has a new "e2freefrag" command which analyzes the free 622space fragmentation of the file system, using the same code as the 623e2freefrag program. 624 625Debugfs now has a "filefrag" command which displays information about 626a file's fragmentation. 627 628Add support to build a metadata-only, read-only, stripped-down version 629of debugfs called rdebugfs. 630 631Fixed a potential stack overrun bug in debugfs. 632 633The badblocks program now correctly recovers from I/O errors when 634direct I/O is being used. The badblocks command now also supports a 635-B option which forces the use of buffered I/O, and the -v option will 636provide a more detailed breakdown of read, write, and failed 637comparison errors. 638 639Added e4defrag tool which uses the EXT4_IOC_MOVE_EXT ioctl. 640 641Added support for journals larger than 2GB. 642 643Support using both hard links and symlinks when installing e2fsprogs. 644 645Add overflow checking to tune2fs -i's fsck interval, which must fit in 646a 32-bit field. 647 648The debugfs command now has a new 'blocks' command which prints out 649data blocks of a particular inode in a format which is useful for 650scripting. 651 652Filefrag will report 0 extents correctly in verbose mode. (Addresses 653RedHat Bugzilla: #653234) 654 655Filefrag has been fixed so its -v report prints the correct expected 656block number (previously there had been an off-by-one error). In 657addition, it will now display the number of contiguous extents when -v 658is not specified. This makes it consistent with the number of extents 659printed when the -v option was specified. In addition, the number of 660contiguous extents is far more interesting/useful than the number of 661physical extents for very large files. (Addresses Debian Bug: 662#631498, #644792) 663 664Logsave's usage message has been fixed. (Addresses Debian Bug: 665#619788) 666 667Avoid an infinite loop in ext2fs_find_block_device() if there are 668symlink loops in /dev caused by a buggy udev. 669 670Added a useful "fallocate" program to the contrib directory. 671 672Fixed an ABI compatibility problem in libext2fs which broke the dump 673program. Also added back some macros which dump needed so it could 674compile against the latest version of ext2_fs.h (Addresses Debian Bug: 675#636418) 676 677Fixed parsing of MNTOPT_ options for tune2fs and debugfs (Addresses 678Debian Bug: #641667) 679 680Added internationalization support for libcom_err error table strings. 681 682Fixed various spelling mistakes found in various output strings found 683by I18N translators. 684 685Update translations: French, Chinese, Germany, Indonesian, Swedish, 686Vietnamese, Polish, Dutch, Czech. (Addresses Debian Bugs: #520985, 687#620659) 688 689Fixed various Debian Packaging issues. (Addresses Debian Bugs: 690#614662, #632169, #641838, #627535, #629355) 691 692Updated/clarified man pages. (Addresses Debian Bugs: #639411, 693#642193, #634883) 694 695Programmer's Notes 696------------------ 697 698Initial support for quota as an integrated feature, where the quota 699files are hidden system files that are automatically maintained by 700e2fsck is present, although disabled by default. It must be enabled 701by using the configure option --enable-quota. 702 703Reserved the on-disk fields for the metadata checksum and snapshot 704features, which are currently in development. 705 706The ext2fs library now has the new functions ext2fs_punch(), 707ext2fs_get_memzero() and ext2fs_file_get_inode(). 708 709The ext2fs library now has support for calculating the crc32c checksum 710(via the new functions ext2fs_crc32c_be and ext2fs_crc32c_le). 711 712The I/O manager now supports the discard operation. 713 714Reserved file system code points for new 1st class quota feature. 715 716Shortened the compilation lines by moving the autoconf defines to 717a config.h header file. 718 719Fixed a potential free of an unitialized pointer in 720ext2fs_update_bb_inode(). 721 722Fixed miscellaneous gcc -Wall and coverity warnings. 723 724Fixed portability issues for Mac OS X, Hurd, and FreeBSD. 725 726Fixed a build failure when OMIT_COM_ERR is defined. 727 728Improved error checking and fixed memory leaks caused by error return 729paths. 730 731Add ext2fs_flush2() and ext2fs_close2() which takes a flag to allow 732the fsync() to be skipped. 733 734Added a test for extent-mapped journals by mke2fs and tune2fs. 735 736Added a test for creating a large (over 4GB) journal using mke2fs. 737 738Added a test to make sure the inode size remains constant. 739 740The regression test script now prints the list of which tests failed. 741 742The regression test system now uses /tmp for its scratch files, which 743is often a tmpfs mounted file system and hence much faster. 744 745The i_e2image test was fixed so it works with valgrind. 746 747Tests that rely on debugfs are now skipped if debugfs wasn't built. 748 749Fixed the dependencies for "make check" so all required dependencies 750are built before running the gression tests. 751 752A link to com_err.h is installed in $(includedir) during a "make install". 753 754The po/*.gmo files are automatically rebuilt if they are missing or 755out of date. This helps out Debian packaging. 756 757Allow ext2fs_get_memalign() to compile on systems that don't have 758posix_memalign(). 759 760Fixed a namespace leak in libext2fs (tdb_null). 761 762 763E2fsprogs 1.41.14 (December 22, 2010) 764===================================== 765 766Fix spurious complaint in mke2fs where it would complain if the file 767system type "default" is not defined in mke2fs.conf. 768 769The resize2fs program will no longer clear the resize_inode feature 770when the number reserved group descriptor blocks reaches zero. This 771allows for subsequent shrinks of the file system to work cleanly for 772flex_bg file systems. 773 774The resize2fs program now handles devices which are exactly 16T; 775previously it would give an error saying that the file system was too 776big. 777 778E2fsck (and the libext2fs library) will not use the extended rec_len 779encoding for file systems whose block size is less than 64k, for 780consistency with the kernel. 781 782Programming notes 783----------------- 784 785E2fsprogs 1.41.13 would not compile on big-endian systems. This has 786been fixed. (Addresses Sourceforge Bug: #3138115) 787 788The ext2fs_block_iterator2() function passed an incorrect ref_offset 789to its callback function in the case of sparse files. (Addresses 790Sourceforge Bug: #3081087) 791 792Fix some type-punning warnings generated by newer versions of gcc. 793 794 795E2fsprogs 1.41.13 (December 13, 2010) 796===================================== 797 798E2fsck now supports the extended option "-E journal_only", which 799causes it to only do a journal replay. This is useful for scripts 800that want to first replay the journal and then check to see if it 801contains errors. 802 803E2fsck will now support UUID= and LABEL= specifiers for the -j option 804(which specifies where to find the external journal). (Addresses 805Debian Bug #559315) 806 807E2fsck now has support for the problems/<problem code>/force_no 808configuration option in e2fsck.conf, which forces a problem to not be 809fixed. 810 811Dumpe2fs will now avoid printing large negative offsets for the bitmap 812blocks and instead print a message which is a bit more helpful for 813flex_bg file systems. 814 815Mke2fs will now check the file system type (specified with the -t 816option) to make sure it is defined in the mke2fs.conf file; if it is 817not, it will print an error and abort. If the usage type (specified 818with the -T option) is not defined in mke2fs.conf, mke2fs will print a 819warning but will continue. (Addresses Debian Bug #594609) 820 821Clarified error message from resize2fs clarifying that on-line 822shrinking is not supported at all. (Addresses Debian Bug #599786) 823 824Fix an e2fsck bug that could cause a PROGRAMMING BUG error to be 825displayed. (Addresses Debian Bug #555456) 826 827E2fsck will open the external journal in exclusive mode, to prevent 828the journal from getting truncated while it is in use due to a user 829accidentally trying to run e2fsck on a snapshotted file system volume. 830(Addresses Debian Bug #587531) 831 832Fix a bug in e2fsck so it has the correct test for the EOFBLOCKS_FL 833flag. 834 835The tune2fs program can now set the uninit_bg feature without 836requiring an fsck. 837 838The tune2fs, dumpe2fs, and debugfs programs now support the new ext4 839default mount options settings which were added in 2.6.35. 840 841The e2fsck and dumpe2fs programs now support the new ext4 superblock 842fields which track where and when the first and most recent file 843system errors occurred. These fields are displayed by dumpe2fs and 844cleared by e2fsck. These new superblock fields were added in 2.6.36. 845 846Debugfs now uses a more concicse format for listing extents in its 847stat command. This format also includes the interior extent tree 848blocks, which previously was missing from stat's output for 849extent-based files. 850 851Debugfs has a new option, -D, which will request Direct I/O access of 852the file system. 853 854Mke2fs will skip initializing the inode table if a device supports 855discard and the discard operation will result in zero'ed blocks. 856 857Badblocks will now correctly backspace over UTF-8 characters when 858displaying its progress bar. (Addresses Gentoo Bug #309909; Addresses 859Debian Bugs #583782 and #587834) 860 861E2freefrag will now display the total number of free extents. 862 863Resize2fs -P no longer requires a freshly checked filesystem before 864printing the minimum resize size. 865 866Fixed a floating point precision error in a binary tree search routine 867that can lead to seg fault in e2fsck and resize2fs. 868 869Fixed a bug in e2fsck where if both the original and backup superblock 870are invalid in some way, e2fsck will fail going back to the original 871superblock because it didn't close the backup superblock first, and 872the exclusive open prevented the file system from being reopened. 873 874Fixed a big in e2freefrag which caused getopt parsing to fail on 875architectures with unsigned chars. (Addresses Gentoo Bug: #299386) 876 877Clarified an mke2fs error message so a missed common in an -E option 878(i.e., mke2fs -t ext4 -E stride=128 stripe-width=512 /dev/sda1") 879results in a more understandable explanation to the user. 880 881Mke2fs now displays the correct valid inode ratio range when 882complaining about an invalid inode ratio specified by the user. 883 884Mke2fs now understands the extended option "discard" and "nodiscard", 885and the older option -K is deprecated. The default of whether 886discards are enabled by default can be controled by the mke2fs.conf 887file. 888 889Mke2fs's handling of logical and physical sector sizes has been 890improved to reflect the fact that there will be some SSD's with 8k and 89116k physical sectors arriving soon. Mke2fs will no longer force block 892size to be the physical sector size, since there will be devices where 893the physical sector size is larger than the system's page size, and 894hence larger than the maximal supported block size. In addition, if 895the minimal and optimal io size are not exported by the device, and 896the physical sector size is larger than the block size, the physical 897sector size will be used to set the Raid I/O optimization hints in the 898superblock. 899 900E2fsck will now display a better, more specific error message when the 901user enters a typo'ed device name, instead of blathering on about 902alternate superblocks. 903 904Fixed various Debian Packaging Issues 905 906Updated/clarified man pages (Addresses Debian Bugs: #580236, #594004, 907#589345, #591083; Addresses Launchpad Bug: #505719) 908 909Update the Chinese, Chzech, Dutch, French, Germany, Indonesian, 910Polish, Swedish, and Vietnamese translations. 911 912 913Programmer's Notes 914------------------ 915 916Fix a dependency definition for the static and profiled blkid 917libraries which could cause compile failures in some configurations. 918(Addresses Debian Bug: #604629) 919 920Add support for Direct I/O in the Unix I/O access layer. 921 922Fixed a memory leak in the Unix I/O layer when changing block sizes. 923 924Fixed minor memory leaks in mke2fs. 925 926Added a new function to the ext2fs library, ext2fs_get_memalign(). 927 928The tst_super_size test program will check to make sure the superblock 929fields are correctly aligned and will print them out so they can be 930manually checked for correctness. 931 932Fixed some makefile dependencies for test programs in lib/ext2fs. 933 934Reserved the feature flags and superblock fields needed for the Next3 935snapshot feature. 936 937Reserved the feature flags for EXT4_FEATURE_INCOMPAT_DIRDATA and 938EXT4_INCOMPAT_EA_INODE. 939 940 941E2fsprogs 1.41.12 (May 17, 2010) 942================================ 943 944Mke2fs now gives a correct error message if the external journal 945device is not found. (Addresses Red Hat Bug #572935) 946 947Resize2fs -P will now refuse to print a minimum size if the file 948system is not clean. Previously it would go ahead and print a minimum 949size anyway, which might not be correct, leading to user confusion. 950 951E2fsck now tests for extents that begin at physical block 0 and 952rejects them as invalid. (Addresses Google Bug: #2573806) 953 954Fixed a bug in e2fsck which could cause it to crash when trying to 955remove an invalid extent and the block bitmaps hadn't yet been loaded. 956(Addresses SourceForge Bug: #2971800) 957 958E2fsck now will completely skip time-based checks if the system clock 959looks insane or the option broken_system_clock is set in 960/etc/e2fsck.conf. 961 962E2fsck would previously report an i_blocks corruption for a 4T file 963created using posix_fallocate; this bug has been fixed. 964 965E2fsck will now correctly mark a sparse journal as invalid and will 966delete and recreate the journal to address the problem. 967 968E2fsck would previously incorrectly ask the user whether she would 969like to abort the file system check after finding a problem --- and 970then abort regardless of the user's answer. This is annoying, and 971has been fixed. 972 973E2fsck can now continue even if it fails to recreate the resize 974inode; previously it would just abort the file system check 975altogether. 976 977E2fsck could potentially remove directory entries for inodes found in 978the unused region of the inode table; this would generally happen on 979ext4 file systems that do not use journaling. This bug has been fixed 980by not clearing these directory entries once it has been established 981that bg_unused_inodes may not be trustworthy; once pass #2 has been 982completed, e2fsck will restart the file system check from the 983beginning, and then it will be safe to delete any directory entries 984pointing to inodes that appear to be deleted. (Addresses Google Bug: 985#2642165) 986 987E2fsck will not try to set the block group checksums if the user 988cancels the fsck with a control-C. It's a bad idea to set the 989checksums if e2fsck hasn't been completed, and it often results an the 990error message, "Inode bitmap not loaded while setting block group 991checksum info". (Addresses Launchpad Bug: #582035) 992 993The mke2fs program now queries the kernel for the physical as well as 994the logical sector size, and will not allow a blocksize below the 995logical, and will strongly encourage a blocksize at least as big as 996the physical blocksize. This is needed for 4k sector drives that 997emulate 512 byte sector sizes. 998 999Mke2fs will now allow a flex_bg size of 1. This is unusual, and 1000rarely needed, but it is a legal value. 1001 1002E2fsck will check for cases where the EOFBLOCKS_FL is set when it is 1003not needed, and offer to clear it; this is a sign of a kernel bug, but 1004more importantly, some released kernels may crash when this situation 1005is encountered on ext4 file systems. (Addresses Google Bug: #2604224) 1006 1007E2fsck will use the EOFBLOCKS_FL flag exclusively to check whether 1008i_size is correct. (Kernels starting with 2.6.34 will set 1009EOFBLOCKS_FL.) 1010 1011The com_err library will now only output ^M (a CR character) when the 1012tty is in raw mode. 1013 1014Update the Czech, Chinese, Dutch, French, Germany, Indonesian, Polish, 1015and Vietnamese translations. 1016 1017Fixed various Debian packaging issues --- see debian/changelog for 1018details. (Addresses Debian Bugs: #571247, #563487) 1019 1020 1021Programmer's Notes 1022------------------ 1023 1024The regression test suite now uses its own mke2fs.conf file, so that 1025downstream distributions want change the mke2fs.conf file which is 1026distributed in the RPM or dpkg file, without worrying about screwing 1027up the regression test results. 1028 1029Always build namei.o so that building with configure --disable-debugfs 1030works correctly. Long-term, if we care about reduced e2fsprogs 1031builds, we need a more general solution for deciding what .o files are 1032needed for a particular build. Given that install floppies are going 1033(gone?) the way the dodo bird, we probably don't care, though. 1034(Addresses Sourceforge Bug: #2911433) 1035 1036Add configure options --enable-symlink-build and 1037--enable-symlink-install, which allow e2fsprogs be built using 1038symlinks instad of hard links, and to be installed using symlinks 1039instead of hard links, respectively. It is useful when the file 1040system where the build is taking place, or the file system where 1041e2fsprogs is installed, can't handle hard links for some reason. 1042(Addresses Sourceforge Bug: #1436294) 1043 1044Fixed compile warning in mke2fs.c. 1045 1046 1047E2fsprogs 1.41.11 (March 14, 2010) 1048================================== 1049 1050E2fsck will no longer give a fatal error and abort if the physical 1051device has been resized beyond 2**32 blocks. (Addresses Launchpad 1052Bug: #521648) 1053 1054Debugfs has a bug fixed so that "logdump -b <blk>" now properly shows 1055the allocation status of the block <blk>. (Addresses Debian Bug: 1056#564084) 1057 1058E2fsck now prints a much more emphatic and hopefully scary message 1059when a file system is detected as mounted while doing a read/write 1060check of the filesystem. Hopefully this will dissuade users from 1061thinking, "surely that message doesn't apply to *me*" :-( 1062 1063E2fsck -n will now always open the file system read-only. We now 1064disallow certain combination of options which previously were manual 1065exceptions; this is bad because it causes users to think they are 1066smarter than they really are. So "-n -c", "-n -l", "-n -L", and "-n 1067-D" are no longer supported. (Addresses Launchpad Bug: #537483) 1068 1069In e2fsprogs 1.41.10, mke2fs would ask for confirmation to proceed if 1070it detected a badly aligned partition. Unfortunately, this broke some 1071distribution installation scripts, so it now just prints the warning 1072message and proceeds. (Addresses Red Hat Bug: #569021. Addresses 1073Launchpad Bug: #530071) 1074 1075Mke2fs would take a long time to create very large journal files for 1076ext4. This was caused by a bug in ext2fs_block_iterate2(), which is 1077now fixed. 1078 1079E2fsck now understands the EOFBLOCKS_FL flag which will be used in 10802.6.34 kernels to make e2fsck not complain about blocks deliberately 1081fallocated() beyond an inode's i_size. 1082 1083E2fsprogs 1.41.10 introduced a regression (in commit b71e018) where 1084e2fsck -fD can corrupt non-indexed directories when are exists one or 1085more file names which alphabetically sort before ".". This can happen 1086with ext2 filesystems or for small directories (take less than a lock) 1087which contain filenames that begin with a space or some other 1088punctuation mark. (Addresses Debian Bug: #573923, Addresses Launchpad 1089Bug: #525114) 1090 1091 1092Programmer's Notes 1093------------------ 1094 1095Add new test, f_rehash_dir, which checks to make sure e2fsck -D works 1096correctly. 1097 1098The libcom_err function now has support for Heimdal's com_right_r 1099function(). (Addresses Sourceforge Bug: #2963865, Addresses Debian 1100Bug: #558910) 1101 1102 1103E2fsprogs 1.41.10 (February 7, 2010) 1104==================================== 1105 1106Fix resize2fs bug which causes it to access invalid memory. 1107 1108Add libss support for libreadline.so.6. 1109 1110Fix e2fsck's check for extent-mapped directory with an incorrect file 1111type. 1112 1113Add new e2fsck.conf configuration option, default/broken_system_clock 1114to support systems with broken CMOS hardware clocks. Also, since too 1115many distributions seem to have broken virtualization scripts now, 1116e2fsck will by default accept dates which are off by up to 24 hours by 1117default. (Addresses Debian Bugs: #559776, #557636) 1118 1119Fix a bug where mke2fs may not use the best placement of the inode 1120table when there is only room for a single block group in the last 1121flex_bg. 1122 1123E2fsck is now smarter when it needs to allocate blocks in the course 1124of fixing file system problems. This reduces the number of spurious 1125differences found in pass #5. 1126 1127E2fsck will no longer rehash directories which fit in a single 1128directory block. 1129 1130E2fsck now correctly handles holes in extent-mapped directories (i.e., 1131sparse directories which use extents). 1132 1133Fix big-endian problems with ext2fs_bmap() and ext2fs_bmap2(). 1134 1135Fix a bug in filefrag where on platforms which can allow file systems 1136with 8k blocks, that it doesn't core dump when it sees a file system 1137with 8k block sizes. (Thanks to Mikulas Patocka for pointing this 1138out.) 1139 1140E2fsck will correctly fix directories that are have an inaccurate 1141i_size as well as other problems in a single pass, instead of 1142requiring two e2fsck runs before the file system is fully fixed. 1143 1144Fix e2fsck so it will correctly find and detect duplicate directory 1145entries for non-indexed directories. ( Addresses Sourceforge Bug: 1146#2862551) 1147 1148Mke2fs will use BLKDISCARD to pre-discard all blocks on an SSD or 1149thinly-provisioned storage device. This can be disabled using the -K 1150option. 1151 1152Enhance libext2fs so it works around bug in Linux version 2.6.19 1153and earlier where the /proc/swaps file was missing the header on 1154the first line. 1155 1156Fix bug in Linux version 2.6.19 and earlier where the /proc/swaps file 1157was missing the header on the first line. 1158 1159Fix some big-endian bugs in e2fsck and libext2fs. 1160 1161Fix resize2fs so it works correctly on file systems with external 1162journals instead of failing early with the error "Illegal inode 1163number". 1164 1165Fix libss so that it does not seg fault when using a readline library 1166which does not supply a readline_shutdown() function. 1167 1168Updated dumpe2fs's usage message so it correctly gives the right 1169arguments summary for "-o superblock=<num>" and "-o blocksize=<num>". 1170(Addresses Launchpad Bug: #448099) 1171 1172Teach libext2fs to ignore the high 32 bits of the i_blocks field 1173when huge_file file system feature is set, but the inode does not 1174have the HUGE_FILE_FL flag set. 1175 1176Fix e2fsck's handling of 64-bit i_blocks fields. 1177 1178E2fsck will now print "Illegal indirect block", "Illegal 1179double-indirect block", etc., instead of "Illegal block #-1" or 1180"Illegal block #-2", etc. This makes it easier for users to 1181understand what has gone wrong. (Addresses SourceForge Bug: #2871782) 1182 1183Mke2fs now will obtain get device topology information from blkid and 1184use it to populate the superblock stride and stripe sizes. It will 1185also warn if the block device is misaligned 1186 1187Fix file descriptor leaks in fsck and debugfs. (Addresses Novell Bug: 1188##524526) 1189 1190Fix the libext2fs library code to round up the bitmap size to a 4-byte 1191boundary, to prevent spurious seg faults caused by the x86 1192architecture. This doesn't affect Linux systems, but was a major 1193problem on a number of *BSD systems. (Addresses Sourceforge Bug: 1194#2328708) 1195 1196Fix resize2fs's minimum size required for a file system so it doesn't 1197fail when "resize2fs -M" is run. (Addresses RedHat Bugzilla: #519131) 1198 1199Dumpe2fs now prints summary information about the contents of the 1200journal. 1201 1202Avoid printing scary error messages when e2fsck starts running 1203problems on low-memory systems, as it tends to panic and mislead the 1204user. (Addresses Debian Bug: #509529) 1205 1206Fix blkid's modules.dep parser so it handles compressed (.ko.gz) 1207modules files. (Address Red Hat Bug: #518572) 1208 1209Fix tune2fs so it can add a journal when an extent-enabled file system 1210is mounted. (Addresses Launchpad bug: #416648) 1211 1212Update Czech, Indonesian, Polish and Vietnamese translations (from the 1213Translation Project). 1214 1215Update/clarify man pages. (Addresses Sourceforge Bug: #2822186) 1216 1217Fixed various Debian packaging issues --- see debian/changelog for 1218details. (Addresses Debian Bugs: #540111) 1219 1220Programmer's Notes 1221------------------ 1222 1223The configure script supports the --with-cc, --with-ccopts, and 1224--with-ldopts options. Instead, the more standard use of CC=, 1225CCFLAGS=, and LDFLAGS= in the configure command line is used instead. 1226Also, --with-ld, which never worked, was also removed. 1227(Addresses Sourceforge Bug: #2843248) 1228 1229The in-tree header files are only used if the in-tree uuid or blkid 1230libraries are used. Otherwise, use the system-provided uuid or blkid 1231header files if using the system-provided libraries. 1232 1233Fix some build failures caused by --disable-* configure options. 1234 1235Work around a bug in autoconf 2.64. 1236 1237 1238E2fsprogs 1.41.9 (August 22, 2009) 1239================================== 1240 1241Fix a bug in e2fsck routines for reallocating an inode table which 1242could cause it to loop forever on an ext4 filesystem with the FLEX_BG 1243filesystem feature with a relatively rare (and specific) filesystem 1244corruption. This fix causes e2fsck to try to find space for a new 1245portion of the inode table in the containing flex_bg, and if that 1246fails, the new portion of the inode table will be allocated in any 1247free space available in the filesystem. 1248 1249Make e2fsck less annoying by only asking for permission to relocate a 1250block group's inode table once, instead of for every overlapping 1251block. Similarly, only ask once to recompute the block group 1252checksums, instead of once for each corrupted block group's checksum. 1253 1254Fix filefrag to avoid print the extent header if the FIEMAP ioctl is 1255not present, and it needs to fall back to using the FIBMAP ioctl. 1256 1257Fix filefrag to correctly print the number of extents for zero-length 1258files. (Addresses Debian Bug: #540376) 1259 1260Filefrag now has a -B option which forces the use of the FIBMAP ioctl 1261to more easily debug the FIBMAP code. 1262 1263Fixed filefrag for non-extent based files. 1264 1265Add a new program, e2freefrag, which displays information about the 1266free space fragmentation in an ext2/3/4 filesystem. 1267 1268Fix inode resizing via tune2fs -I so that it works correctly in the 1269face of non-empty bad blocks inodes, and if the filesystem was 1270formatted using the "mke2fs -E stride=N" option for RAID arrays. 1271 1272Fix regression in ext2fs_extent_set_bmap() caused e2fsck -fD to fail 1273and corrupt large directories if the directory needs to shrink by more 1274than one block. (Addresses Debian Bug: #537510) 1275 1276Fix e2fsck's buggy_init_scritps=1 so that the if the last write and/or 1277last mount times are in the future, they are corrected even if 1278buggy_init_scripts is set. This is needed because otherwise resize2fs 1279will refuse to resize the filesystem, even after running "e2fsck -f". 1280(Addresses Launchpad bug: #373409) 1281 1282E2fsck will now print much fuller information when the last mount time 1283or last written time is in the future, since most people can't seem to 1284believe their distribution has buggy init scripts, or they have a 1285failed CMOS/RTS clock battery. 1286 1287Enhance dumpe2fs to dump the extent information via the 'stat' 1288command, and more detailed extent information via the new command 1289'dump_extents'. 1290 1291Update French, Polish, Czech, and Sweedish translation from the 1292Translation Project. 1293 1294Fixed various Debian packaging issues --- see debian/changelog for 1295details. 1296 1297Programmer's Notes 1298------------------ 1299 1300Fixed miscellaneous gcc -Wall warnings. 1301 1302Fixed memory leak in error path in ext2fs_block_iterate2() 1303 1304Fixed non-Linux build of the intl directory by adding support for the 1305E/Q/V macros. 1306 1307The bitmap read/write functions now treat uninitialized bitmaps as 1308unallocated; this fixes a number of problems in all e2fsprogs for ext4 1309filesystems when there is a need to allocate new blocks or inodes, and 1310there aren't any free blocks or inodes in the already-used block 1311groups. 1312 1313Improve ext2fs_extent_set_bmap() to avoid creating new extents which 1314get inserted into the extent tree when they are not needed. 1315 1316 1317E2fsprogs 1.41.8 (July 11, 2009) 1318================================ 1319 1320Fix resize2fs's online resizing, fixing a regression which in 1321e2fpsrogs 1.41.7. (Addresses Debian Bug: #535452) 1322 1323Fix potential filesystem corruptions caused by using resize2fs to 1324shrinking ext4 filesystems with extents enabled. (Addresses Red Hat 1325Bug: #510379) 1326 1327Optimize uuid_generate() to avoid running uuidd if it is not setuid or 1328setgid and the currently running program doesn't have write access to 1329the uuidd work directory. 1330 1331Add safety checks (for non-Linux systems) so that uuidd isn't run with 1332file descriptors 0, 1, and 2 closed; and if they are closed, uuidd 1333will be careful not to close the file descriptor for its unix domain 1334socket when it detaches itself from the controlling tty. Also add 1335safety checks so that if the unix domain socket between the uuid 1336library and uuidd program is closed for any reason, both the library 1337and the uuidd will return an appropriate error code instead of looping 1338in an infinite loop. 1339 1340The e2croncheck script, which creates an LVM snapshot and then checks 1341the ext3/4 filesystem via the LVM snapshot, has been added to the 1342contrib directory. 1343 1344Fix filefrag program for files that have more than 144 extents. 1345 1346Update French, Polish, Czech, Indonsian, and Sweedish translation from 1347the Translation Project. 1348 1349Fixed various Debian packaging issues --- see debian/changelog for 1350details. (Addresses Debian Bug #535530) 1351 1352Update/clarify man pages. 1353 1354Programmer's Notes 1355------------------ 1356 1357Fix compilation problem when configured with --disable-uuid. 1358 1359Don't build uuidgen if configured with --disable-uuid. 1360 1361Add the new library function ext2fs_test_inode_bitmap_range(), and 1362optimized ext2fs_test_block_bitmap_range(), which will be needed for 1363future optimizations for e2fsck. 1364 1365Fix makefile dependencies for libcom_err so that the Makefiles work 1366well on non-GNU make program. (Addresses Sourceforge Patches: #2813809) 1367 1368Enhance the build system so that the full set of commands executed by 1369the Makefiles are displayed, instead of the Linux kernel summary 1370output, if the build was configured with --enable-verbose-makecmds, or 1371if GNU make is in use and the V variable is non-null, i.e., via "make 1372V=1". 1373 1374 1375E2fsprogs 1.41.7 (June 29, 2009) 1376================================ 1377 1378Fix a bug in libext2fs which can cause e2fsck and resize2fs to write 1379uninitalized data into the portion of the inode beyond the first 128 1380bytes when operating on inodes mapped via extents; potentially 1381corrupting filesystems. 1382 1383Fix memory leaks in e2fsprogs, including a very large memory leak 1384which can cause e2fsck to run out of memory when checking very large 1385filesystems using extents. 1386 1387The logsave program will now filter out the ^A and ^B characters when 1388writing to the console. 1389 1390Harden ext2fs_validate_entry() so that lsdel will not read beyond the 1391end of the block even if the directory block is corrupted. 1392 1393Fix debugfs from core dumping if the logdump command fails to open the 1394output file. 1395 1396Enhance badblocks to print the currently tested block number when 1397interrupted with ^C. 1398 1399Fix lsattr to exit with a non-zero status when it encounters errors. 1400(Addresses RedHat Bugzilla #489841) 1401 1402Fix e2fsprogs to use the same encoding for rec_len in 64k (and larger) 1403filesystems as the kernel when encoding rec_len >= 64k. For 64k 1404filesystems (currently all that is supported by e2fsprogs, this is 1405only a minor corner case). 1406 1407Resize2fs will now update the journal backup fileds in the sup0erblock 1408if the journal is moved; this avoids an unnecessary full fsck after 1409resizing the filesystem. (Addresses RedHat Bugzilla: #505339) 1410 1411Fix libext2fs to properly initialize i_extra_size when creating the 1412journal and resize inodes. 1413 1414Change badblocks to allow block sizes larger than 4k. 1415 1416Fix filefrag progam so it correctly checks for errors from the fiemap ioctl. 1417 1418Update Chinese and Czech translation from the Translation Project. 1419 1420Clean up various man pages. (Addresses Debian Bug #531385 and #523063) 1421 1422 1423Programmer's Notes 1424------------------ 1425 1426Add --disable-libuuid option to configure which uses an in-system 1427installed version of libuuid; the private version is enabled by 1428default. 1429 1430Add --valgrind-leakcheck option to the test_script program which runs 1431valgrind with the appropriate options to find memory leaks. 1432 1433 1434E2fsprogs 1.41.6 (May 30, 2009) 1435=============================== 1436 1437Fix a critical regression in e2fsck introduced version 1.41.5 which 1438can undo updates to the block group descriptors after a journal replay. 1439 1440If e2fsck receives an I/O error while replaying the journal, prompt 1441the user whether they want to ignore the error or not; if e2fsck is 1442run in preen mode, force fsck to abort the preen pass. 1443 1444Fix a bug which would cause e2fsck to core dump if the filesystem 1445contains a corrupt extent header, and the user declines to clear the 1446inode. (Addresses Sourceforge Bug: #2791794) 1447 1448Fix e2fsck to restart only once in the case of multiple block groups 1449which inodes in use that are in the uninitialized part of the block 1450group's inode table. 1451 1452To reduce user confusion, if the /etc/mtab file is missing 1453ext2fs_check_mount_point and ext2fs_check_if_mounted will return a 1454new, explicit error code to indicate this case. This will cause 1455e2fsck to give a clearer error message when the user is using buggy 1456rescue CD's that don't properly set up /etc/mtab. (Addresses Debian 1457Bug: #527859) 1458 1459Fix e2fsck so that if the primary group descriptors are corrupted, but 1460the backup superblock is entirely invalid, to go back to using (and 1461fixing) the priary group descriptors instead of completely giving up 1462on the filesystem. (Addresses Debian Bug: #516820) 1463 1464Change e2fsck to not abort a preen pass if an inode is found to have 1465i_file_acl_hi non-zero. Ext3 filesystems don't care, and newer 1466kernels (post 2.6.29) will ignore this field. So let's fix it 1467automatically during the preen pass instead of forcing the user to fix 1468this up manually. (Addresses Debian Bug: #526524) 1469 1470Add resource tracking for e2fsck passes 1b through 1d. 1471 1472Speed up e2fsck by eliminating unnecessary journal checks if the 1473filesystem is already mounted and doesn't need recovery (since the 1474kernel would have run the journal when the filesystem was mounted.) 1475Also speed up e2fsck by avoiding unnecessary block group descriptor 1476updates in ext2fs_close(). 1477 1478Add support to chattr to migrate inodes from using direct/indirect 1479blocks to extents. 1480 1481Avoid corrupting the filesystem if there is an attempt to shrink a 1482filesystem using resize2fs smaller than posible by making 1483ext2fs_set_bmap() more careful not to delete the old block until the 1484new block can be inserted. In addition, fix a bug in how the minimum 1485size of the filesystem (plus a safety margin) is calculated, and 1486modify resize2fs to refuse to shrink the filesystem below that minimum 1487size without the force flag. 1488 1489Teach blkid to try to figure out DM device names using take advantage 1490of information in sysfs when running on kernels (2.6.29 and later) 1491which provide this information in /sys/block/dm-<N>/dm/name; this is 1492much faster than scanning for the devncie number in /dev/mapper. 1493 1494Fix blkid to prefer /dev/mapper/<name> device names instad of the 1495private /dev/dm-X names. 1496 1497Add an -a option to debugfs's close_filesys command which writes any 1498changes to the superblock or block group descriptors to all of the 1499backup superblock locations. 1500 1501Add support to the filefrag program to use the FIEMAP ioctl. 1502 1503Update Chinese translation from the Translation Project. 1504 1505Clean up various man pages. (Addresses Red Hat Bugzilla: #502971 and 1506Launchpad Bug: #381854) 1507 1508Fixed various Debian packaging issues --- see debian/changelog for 1509details. (Addresses Debian Bug #506064) 1510 1511 1512Programmer's Notes 1513------------------ 1514 1515Add test code to make sure e2fsck's problem.c doesn't have two problem 1516codes assigned to duplicate values. 1517 1518Avoid using a hard-coded path for /bin/rm in block's test_probe.in. 1519(Addresses Sourceforge Bug: #2780205) 1520 1521Clean up e2fsck by removing #ifdef RESOURCE_TRACK by adding an empty 1522function declaration for init_resource_track() and 1523print_resource_track() when RESOURCE_TRACK is not defined. 1524 1525The test code which is used to build the tst_csum progam has been 1526moved from from tst_csum.c into csum.c under an #ifdef DEBUG to to 1527avoid compile problems caused by not having a prototype for 1528ext2fs_group_desc_csum(). (Addresses Sourceforge Bug #2484331) 1529 1530Update the config.guess and config.sub file to the latest from the 1531FSF, to allow e2fsprogs to build on the avr32 platform. (Addresses 1532Debian Bug: #528330) 1533 1534Add a new function, ext2fs_extent_open2(), which behaves like 1535pext2fs_extent_open(), but uses the user-supplied inode structure 1536when opening an extent instead of reading the inode from disk. 1537 1538 1539E2fsprogs 1.41.5 (April 23, 2009) 1540================================= 1541 1542Fix a number of filesystem corruption bugs in resize2fs when growing 1543or shrinking ext4 filesystems off-line (i.e., when the ext4 filesystem 1544is not mounted). 1545 1546Debugfs can now set i_file_acl_high via the set_inodes_field command, 1547and print a 64-bit file acl. This is useful for debugging filesystem 1548corruptions where the high bits of i_file_acl_high are set. E2fsck 1549will detect and fix non-zero i_file_acl_high on 32-bit filesystems 1550since some Linux kernel versions pay attention to this field even when 1551they shouldn't. 1552 1553Speed up e2fsck when checking clean filesystems by avoiding 1554unnecessary block reads, and coalescing the block group descriptor 1555blocks so they are read using a single read operation. 1556 1557The libuuid library will now close all file descriptors before running 1558uuidd. This avoids problems when the calling program has open sockets 1559which then never get closed because uuidd is a long-running helper 1560daeomn. (Addresses Launchpad bug: #305057) 1561 1562In order to avoid unnecessary full filesystem checks by e2fsck after 1563an on-line resize, e2fsck will ignore the NEEDS_RECOVERY flag set on 1564the backup superblocks. (Addresses Red Hat Bugzilla: #471925) 1565 1566Mke2fs will avoid trying to create the journal when run in 1567superblock-only mode (mke2fs -S), since the left-over journal in the 1568inode table will cause mke2fs to fail. 1569 1570Fix a bug in libext2fs functions that check to see if a particular 1571device or filesystem image is mounted, which would cause these 1572functions to report that a file identical to the (relative) pathname 1573used by a pseudo-filesystem was mounted when in fact it was not. 1574 1575Update Czech translation from the Translation Project. 1576 1577Add Chinese (simplified) translation from the Translation Project. 1578 1579Fix support for external journals (which was broken in e2fsprogs 15801.41.4). 1581 1582Fix a regression in debugfs where the "stat" command when no 1583filesystem was open would cause debugfs to crash with a segmentation 1584violation. 1585 1586Starting in the 2.6.29 linux kernel, the ext4 filesystem driver can be 1587used to support filesystems without a journal. Update the blkid 1588library so it understands this. 1589 1590The blkid library will remove an entry from the blkid cache 1591representing the entire disk if partitions are found, since presuambly 1592the device previously had no partition table, but has now transitioned 1593to using a partition table. 1594 1595Add a check to mke2fs and tune2fs that the argument to the -m option 1596(which specifies the reserved ratio) must be greater than zero. 1597(Addresses Debian Bug: #517015) 1598 1599Add support for tracking the number kilobytes written to the 1600filesystem via the superblock field s_kbytes_written. It will be 1601updated by the kernel as well as by e2fsprogs programs which write to 1602the filesystem. This is useful for tracking the wear to filesystems 1603on Solid Sstate Drives. 1604 1605Fix compatibility issue in the libext2fs info file and makeinfo 1606version 4.12. (Addresses Red Hat Bugzilla: #481620) 1607 1608Update/clarify man pages. (Addresses Debian Bug: #515693, #365619) 1609 1610Fixed various Debian packaging issues --- see debian/changelog for 1611details. (Addresses Debian Bug: #506279) 1612 1613Programmer's Notes 1614------------------ 1615 1616Fix Hurd compilation problem in e2fsck and tune2fs (Addresses Debian 1617Bug: #521602) 1618 1619Fix various gcc compilation warnings and other programming cleanups. 1620(Addresses Red Hat Bugzilla: #486997) 1621 1622Add support for building the blkid command statically. 1623 1624Add support for disabling the built-in blkid library in favor of a 1625system-installed blkid implementation via the configure option 1626--disable-libblkid. 1627 1628 1629E2fsprogs 1.41.4 (January 27, 2009) 1630=================================== 1631 1632Fixed a bug which could sometimes cause blkid to return an exit value 1633of zero for a non-existent device (Addresses Debian Bug: #502541) 1634 1635Blkid will now recognize ext3 filesystems that have the test_fs flag 1636set as ext3 filesystems. 1637 1638The blkid library will now recognize btrfs filesystems and swap 1639devices currently used by user-level software suspend. 1640 1641Tune2fs now updates the block group checksums when changing the UUID 1642to avoid causing e2fsck to complain vociferously at the next reboot. 1643 1644Tune2fs's inode size resizing algorithms have been fixed so it is not 1645vastly inefficient for moderate-to-large filesystems, due to some 1646O(n**2) and O(n*m) algorithms that didn't scale well at all. 1647 1648Fix tune2fs's inode resizing algorithm so it will not corrupt 1649filesystems laid out for RAID filesystems; in addition, tune2fs will 1650refuse to change the inode size for filesystems that have the flex_bg 1651feature enabled. (This is a limitation in the current implementation 1652of tune2fs -I.) 1653 1654E2fsprogs 1.41 broke debugfs's logdump command for normal ext3/4 1655filesystems with 32-bit block numbers, when the headers for 64-bit 1656block numbers was added. This regression has been fixed. 1657 1658Debugfs's ncheck command has been fixed to avoid printing garbage 1659characters at the end of file names. 1660 1661Fix resize2fs for ext4 filesystems. Some blocks that that need moving 1662when shrinking filesystems with uninit_bg feature would not be moved. 1663In addition, blocks and inode table blocks were not being correctly 1664freed when shrinking filesystems with the flex_bg feable, which caused 1665resize2fs -M to fail. Finally, when blocks are moved, make sure the 1666uninitialized flag in extents is preserved. 1667 1668Fix bug which caused dumpe2fs to abort with an error if run on a 1669filesystem that contained an external journal. 1670 1671Some distributions used "mke3fs" as an alias for "mkfs.ext3"; check 1672for this in argv[0] to provide better legacy support for these 1673distributions. This is a practice that should NOT be continued, 1674however. 1675 1676Mke2fs now has a new option -U, which allows the user to specify the 1677UUID that should be used for the new filesystem. 1678 1679Mke2fs will treat devices that are exactly 16TB as if they were 16TB 1680minus one block. This allows users who have read that ext3 supports 1681up to 16TB filesystems and who create a 16TB LVM to not get confused, 1682since the true limit is really 16TB minus one block. 1683 1684E2fsck will no longer abort an fsck run if block group has an errant 1685INODE_UNINIT flag. 1686 1687E2fsck now distinguishes between fragmented directories and fragmented 1688files in verbose mode statistics and in the fragcheck report. 1689 1690Fix a bug in e2fsck which casued it double count non-contiguous 1691extent-based inodes. 1692 1693E2fsck will leave some slack space when repacking directories to allow 1694room for a few directory entries to be added without causing leaf 1695nodes to be split right away. 1696 1697Fix a bug which caused e2fsck to crash when it comes across a 1698corrupted interior node in an extent tree with the error message: 1699"Error1: Corrupt extent header on inode XXXXXX" 1700 1701E2fsck problem descriptions involving the journal are no longer 1702referred to as "ext3" problems, since ext4 filesystems also have 1703journals. 1704 1705Fix a long-standing bug in e2fsck which would cause it to crash when 1706replying journals for filesystems with block sizes greater than 8k. 1707 1708Update Catalan translation from the Translation Project. 1709 1710Fixed various Debian packaging issues --- see debian/changelog for 1711details. (Addresses Debian Bugs: #503057, #502323, #511207) 1712 1713Programmer's Notes 1714------------------ 1715 1716Fix build of e2fsck.profiled, and add support for building profiled 1717binaries in the misc directory if configured with --enable-profile. 1718 1719The ext2fs_open() function now performs more sanity checks on the 1720superblock to avoid potential divide by zero errors by other parts of 1721library. 1722 1723The ext2fs_read_inode_full() function now has a safety check to avoid 1724a segmentation fault on corrupted filesystems. 1725 1726The ext2fs_new_inode() function now has a sanity check so that if the 1727s_first_inode field in the superblock is insane, it will return 1728EXT2_ET_INODE_ALLOC_FAIL instead of returning an invalid inode number. 1729 1730To avoid segmentation faults, ext2fs_block_alloc_stats() and 1731ext2fs_inode_alloc_stats() now validates the passed inode or block 1732number to avoid overrunning an array boundary. 1733 1734Various signed/unsigned errors for variables containing block numbers 1735have been fixed. 1736 1737Accomodations for gcc's stupidity in not realizing that constant 1738strings that do not contain a '%' character are safe to use in format 1739strings have been made so that distributions that want to compile 1740e2fsprogs with -Werror=format-security have an easier time doing so. 1741 1742Added a new 64-bit getsize interface, ext2fs_get_device_size2(). 1743 1744Added the utility make-sparse.c to the contrib directory. 1745 1746The ext2fs_block_iterate2() function now reflects errors from 1747ext2fs_extent_set_bmap() to the caller, if the callback tries to 1748change a block on an extent-based file, and ext2fs_extent_set_bmap() 1749fails for some reason (for example, there isn't enough disk space to 1750split a node and expand the extent tree. 1751 1752The ext2fs_block_iterate2() function will preserve the uninit flag in 1753extents when the callback function modifies a block in an extent-based 1754file. 1755 1756E2fsck will now flag filesystems that have an insane s_first_ino field 1757in their superblock, and attempt to use a backup superblock to repair 1758the filesystem. 1759 1760 1761E2fsprogs 1.41.3 (October 12, 2008) 1762=================================== 1763 1764E2fsck has been fixed so it prints the correct inode number for 1765uinit_bg related problems. 1766 1767E2fsck will now offer to clear the test_fs flag if the ext4 filesystem 1768is available on linux. This can be disabled via a configuration 1769option in /etc/e2fsck.conf. 1770 1771Fix a file descriptor leak in libblkid when checking to see if an ext4 1772or ext4dev module exists. 1773 1774Fix a bug in e2fsck where in preen mode, if there are disk I/O errors 1775while trying to close a filesystem can lead to infinite loops. 1776(Addresses Red Hat Bugzilla #465679) 1777 1778Fix a bug in resize2fs where passing in a bogus new size of 0 blocks 1779will cause resize2fs to drop into an infinite loop. (Addresses Red 1780Hat Bugzilla: #465984) 1781 1782Add a check in the Unix I/O functions in libext2fs so that when a 1783device is opened read/write, return an error if the device is 1784read-only using the BLKROGET ioctl. 1785 1786Fix debugfs's ncheck command so that it prints all of the names of 1787hardlinks in the same directory. 1788 1789Fix a bug in libblkid so it correctly detects whether the ext4 and 1790ext4dev filesystems are available, so that the ext4dev->ext4 1791fallback code works correctly. 1792 1793Programmer's Notes 1794------------------ 1795 1796Fix a parallel build problem by making sure util/subst is built before 1797trying to build the lib/et directory. (Addresses Sourceforge Bug: 1798#2143281) 1799 1800Updated "make depend" information for crc16.o 1801 1802 1803E2fsprogs 1.41.2 (October 2, 2008) 1804================================== 1805 1806Fix e2fsck's automatic blocksize detection. This fixes a regression 1807from e2fsprogs 1.40.7 which caused e2fsck to fail if the user 1808specifies a block number using the -b option if the blocksize option 1809isn't also specified using -B. Unfortunately, users very commonly 1810invoke e2fsck using "e2fsck -b 32768 /dev/hdXXX" to use the backup 1811superblock; in fack e2fsck will often suggest this kind of command 1812line. Oops. 1813 1814Enhance the debugfs's "ncheck" command so it will print all of the 1815pathnames for the specified inodes. (Previously, in some cases ncheck 1816might not print a pathname for an inode at all if some of the other 1817inodes had multiple hard links.) 1818 1819Enhance debugfs's "hash" command so the hash seed can be specified via 1820a command-line option. In addition, allow the hash algorithm to be 1821specified by name instead of just by number. 1822 1823Fix e2fsck so that we don't accidentally print the translation file's 1824header when asking the user a custom question so there is no prompt 1825defined for a particular problem record. For example, the question 1826"Run journal anyway" will get the PO header tacked on because e2fsck 1827erroneously passed the null string to _(). (Addresses Launchpad Bug: 1828#246892) 1829 1830Enhance badblocks so that it can test a normal file which is greater 1831than 2GB. 1832 1833Enhance the badblocks command so that it displays the time and 1834percentage complete when in verbose mode. (Addresses Debian Bug: 1835#429739) 1836 1837Fix a potential memory leak in a error handling path in debugfs's 1838ncheck function. 1839 1840Fix a potential memory corruption problem if a memory allocation fails 1841in resize2fs. 1842 1843Fix the usage message for debugfs's logdump command to be consistent 1844with its man manpage. 1845 1846Update Polish, French, Vietnamese, Dutch, Indonesian, German, Czech, 1847and Sweedish translation from the Translation Project. 1848 1849Add documentation for the file I/O functions to the libext2fs.texinfo 1850file. (Addresses Debian Bug: #484877) 1851 1852Update and clarified various man pages. (Addresses Launchpad Bug 1853#275272; Addresses Debian Bugs: #498100, #498101, #498102, #498103) 1854 1855Fixed various Debian packaging issues --- see debian/changelog for 1856details. (Addresses Debian Bug: #497619) 1857 1858Programmer's Notes 1859------------------ 1860 1861Fix a potential file descriptor leack in libcom_err by setting the 1862close-on-exec flag for a fd used for debugging. (Addresses Red Hat 1863Bugzilla #464689) 1864 1865Fix a potential race in libcom_err by using sem_post/sem_init. SuSE 1866has been carrying a patch for a long time to prevent a largely 1867theoretical race condition if a multi-threaded application adds and 1868removes error tables in multiple threads. Unfortunately SuSE's 1869approach breaks compatibility by forcing applications to link and 1870compile with the -pthread option; using pthread mutexes has 1871historically been problematic. We fix this by using sem_post/sem_init 1872instead. 1873 1874Fix e2fsprogs-libs build failure due to 'subs' target. (Addresses 1875Sourceforge Bug: #2087502) 1876 1877Avoid linking e2initrd_helper, debugfs, blkid, and fsck with unneeded 1878libraries when using ELF shared libraries. 1879 1880Fix ELF shared library when building on systems that don't already 1881have the e2fsprogs shared libraries already installed. (Addresses 1882Sourceforge Bug: #2088537) 1883 1884Fix the pkg-config files so they work correctly when linking with 1885static libraries and fix the include directory so programs don't have 1886to use #include <ext2fs/ext2fs.h>, but can use #include <ext2fs.h> 1887instead. (Addresses Sourceforge Bug: #2089537) 1888 1889Make sure ext2fs_swab64() is compiled for all platforms, and not just 1890for x86. (Addresses Debian Bug: #497515) 1891 1892Remove the unused ext2fs_find_{first,ext}_bit_set() functions for all 1893non-x86 platforms. (They had been removed for x86 earlier.) 1894 1895Fix diet libc compilation support, which had bitrotted due to lack of 1896TLC. Fixing this improves general portability. 1897 1898When installing the link library when using ELF shared libraries, 1899avoid using absolute pathnames if the link library and the shared 1900library are installed in the same directory. (Addresses Sourceforge 1901Bug: #1782913) 1902 1903Fix gen-tarball so it will work even if the top-level directory has 1904been renamed to something other than "e2fsprogs". Also make 1905gen-tarball print the size of the resulting tar.gz file. 1906 1907 1908E2fsprogs 1.41.1 (September 1, 2008) 1909==================================== 1910 1911Many people are forgetting to update their mke2fs.conf file, and this 1912causes ext3, ext4, and ext4dev filesystems won't get created with the 1913proper features enabled. We address this in two ways. First, mke2fs 1914will issue a warning if there is not definition for an ext3, ext4, or 1915ext4dev filesystem and the user is trying to create such a filesystem 1916type. Secondly, when installing from a source build, "make install" 1917will provide basic configuration file handling for /etc/mke2fs.conf. 1918If it exists, and does not mention ext4dev, it will be moved aside to 1919/etc/mke2fs.conf.e2fpsrogs-old and the new /etc/mke2fs.conf file will 1920be installed. If the existing /etc/mke2fs.conf file does mention 1921ext4dev, then "make install" will install official mke2fs.conf file as 1922/etc/mke2fs.conf.e2fsprogs-new and issue a message to the user that 1923they should look to see if any changes need to be merged. 1924 1925The mke2fs program will now create the journal in the middle of the 1926filesystem, since this minimizes seek times on average for fsync-heavy 1927workloads. In addition, mke2fs will now create journals using extents 1928for filesystems that support them. This results in a more efficient 1929encoding for the journal since it eliminates the need for using 1930indirect blocks. 1931 1932The mke2fs program will avoid allocating an extra block to the 1933journal. (Addresses Sourceforge Bug: #1483791) 1934 1935Mke2fs will correctly enforce the prohibition against features 1936(specifically read-only features) in revision 0 filesystems. (Thanks 1937to Benno Schulenberg for noticing this problem.) 1938 1939Mke2fs previously would occasionaly create some slightly non-optimally 1940placed inode tables; this bug has been fixed. 1941 1942The mke2fs and tune2fs programs now print the correct usage message 1943describing the maximum journal size. (Addresses Debian Bug: #491620) 1944 1945Add support for setting the default hash algorithm used in b-tree 1946directories in tune2fs (from a command-line option) or mke2fs (via 1947mke2fs.conf). In addition, change the default hash algorithm to 1948half_md4, since it is faster and better. 1949 1950The blkid library will now recognize MacOS hfsx filesystems, and 1951correctly extract the label and uuid for hfs, hfsx, and hfsplus 1952filesystems. (Addresses Sourceforge Feature Requests: #2060292) 1953 1954The blkid library has improved detection of JFS and HPFS filesystems. 1955(Addresses Launchpad Bug: #255255) 1956 1957The blkid library is now much more efficiently handling devicemapper 1958devices, mainly by no longer using the devicemapper library. This can 1959speed up access for systems with a large number of device mapper 1960devices. 1961 1962Blkid had a number of cache validation bugs in libblkid that have been 1963fixed. (Addresses Debian Bug: #493216) 1964 1965Resize2fs will now properly close out the "updating inode references" 1966progress bar so there is a newline printed before printing the final 1967"resize is successful" message. 1968 1969Resize2fs will now correctly handle filesystems with extents and/o 1970uninitialized block groups correctly when file/directory blocks need 1971to relocated (i.e., when shrinking a filesystem or if the resize_inode 1972is not present). To support this, the ext2fs library now supports 1973initializing inode and block bitmaps that are not yet initialized when 1974allocating them using ext2fs_new_block() and ext2fs_new_inode(). In 1975addition, e2fs_block_iterate2() can now support changing the location 1976of interior nodes of an extent tree, and ext2fs_extent_set_bmap() has 1977been optimized to avoid creating unnecessary new extents when updating 1978the location of blocks in the extent tree. This will also help out 1979e2fsck's recovery of obscurely corrupted filesystems with extents, 1980when blocks are claimed by multiple inodes. 1981 1982Add support for on-line resizing ext4 filesystem with the flex_bg 1983filesystem feature. The method for doing so is not optimal, but to do 1984a better job will require kernel support. 1985 1986E2fsprogs 1.41.0 intrduced a bug in libext2fs which casued e2image and 1987debugfs programs to not be able to read e2image files; the signed 1988vs. unsigned bug in the code which read bitmaps from the e2image has 1989been fixed. (Addresses Debian Bug: #495830) 1990 1991Resize2fs is now correctly managing the directory in-use counts when 1992shrinking filesystems and directory inodes needed to be moved from one 1993block group to another. This bug has been around since e2fsprogs 19941.26, and is largely harmless, but does cause a filesystem corruption 1995which will be flagged by e2fsck after the filesystem has been shrunk. 1996 1997E2fsck will no longer issue spurious complaints about the inode size 1998caused by very large extent-based files, and by blocks reallocated 1999using fallocate() with the FALLOC_FL_KEEP_SIZE option. (Addresses 2000Kernel Bugzilla: #11341) 2001 2002Mke2fs will now set the creation timestamp on the lost+found directory 2003and the root directory. (More generally, all new inodes created using 2004the ext2fs library will correctly set the creation timestamp.) 2005 2006E2fsck now correctly calculates ind/dind/tind statistics in the 2007presence of extent-based files. In addition, "e2fsck -v" will report 2008statistics of the depth of extent trees in the filesystem. E2fsck can 2009also give an inode fragmentation report using "e2fsck -E fragcheck" 2010which can be useful when debugging the kernel block allocation 2011routines. 2012 2013Fix support for empty directory blocks in ext4 filesystems with 64k 2014blocksize filesystems. 2015 2016E2fsck will now print the depth of corrupt htree directories. 2017 2018Debugfs's htree command now correctly understands extent-based 2019directories. It will also print out the minor hash as well as the 2020major hash. 2021 2022Debugfs has a new command which will print the supported features of 2023e2fsprogs, to enable scripts to know whether the installed version of 2024e2fsprogs can support a specific feature. 2025 2026Debugfs will now write files using extents for filesystems that 2027support them. 2028 2029The error message printed by "tune2fs -I" if the inode size was too 2030small was rather confusing, so it has been improved. Also, we won't 2031try to create an undo log until we know that command-line-specified 2032parameters such as "tune2fs -I <inode size>" are valid. 2033 2034Given some filesystems found "in the wild" that had non-zero block 2035group checksums even though the uninit_bg/gdt_sum feature was not 2036enabled, e2fsck would issue spurious error messages. Teach 2037ext2fs_group_desc_csum_verify() to ignore the block group checksum 2038entirely if the feature flag is not set. (Addresses Debian Bug: 2039#490637) 2040 2041The blkid program will now print out a user-friendly listing of all of 2042the block devices in the system and what they contain when given the 2043-L option. (Addresses Debian Bug: #490527) 2044 2045The filefrag program now has a more accurate calculation for the 2046number of ideal extents. (Addresses Debian Bug: #458306) 2047 2048The test I/O manager is now enabled by default, but its overhead is 2049only incurred when it would be enabled via the TEST_IO_FLAGS or 2050TEST_IO_BLOCK environment variables. 2051 2052Typographical errors in various program strings and usage messages 2053have been fixed; most of these were pointed out by the e2fsprogs 2054message catalog translators. (Thanks, translators!) 2055 2056Update and clarified various man pages, as well as some typographical 2057errors in the libext2fs texinfo file. 2058 2059Fixed various Debian packaging issues --- see debian/changelog for 2060details. 2061 2062Add Indonesian and update French, Polish, Dutch, German, Sweedish, 2063Czech, and Vietnamese Translations. (Addresses Debian Bugs: #313697, 2064#401092) 2065 2066Programmer's Notes 2067------------------ 2068 2069Fix portability problem with the badblocks group; for systems that 2070don't have nanosleep(), try using usleep() instead. 2071 2072The "make check" target in the e2fsck directory now sets 2073LD_LIBRARY_PATH before running the various e2fsck internal library 2074regression tests. 2075 2076The crc32 regression test in the e2fsck library is now portable to 2077greater varienty of environments, including big-endian systems and 2078when cross-building e2fsprogs for embedded systems. (Addresses 2079Sourceforge Bug: #2019287) 2080 2081The ext2fs_extent_set_bmap() had some bugs when setting the first 2082block in a file, or when replacing a single block extent. Those cases 2083fortunately were came up relatively rarely when e2fsck was checking 2084files, but caused some problems when resize2fs was shrinking 2085extent-based files. 2086 2087Fix a potential core-dumping bug in libe2p's iterate_on_dir() 2088function. 2089 2090Various ext2fs library functions --- ext2fs_block_iterate2(), 2091ext2fs_initialize() and ext2fs_extent_open() --- now correctly free 2092allocated memory to avoid memory leaks in all of their error return 2093paths. 2094 2095Ext2ed was failing to build because masix support had been removed in 2096the rest of e2fsprogs, so ext2ed no longer has masix support, either. 2097 2098The configure script now respects the LDFLAGS environment variable if 2099it is set when configure is called. (Addresses Sourceforge Feature 2100Request: #1937287) 2101 2102Libuuid is now more portable to the Windows platform. (Addresses 2103Sourceforge Feature Request: #1937287) 2104 2105The configure script now uses AC_MSG_{RESULT,WARN,ERROR} instead of 2106bare echo commands so that configure flags such as --quiet work 2107correctly. (Addresses Sourceforge Patches: #2058794) 2108 2109A few uses of sprintf have been removed from the ext2fs library to 2110make life easier for bootloaders with a limited libc environment. 2111(Addresses Sourceforge Bug: #2049120) 2112 2113The ext2fs_read_inode() checks the validity of the inode number passed 2114to it earlier, to avoid doing some needless work when it would fail 2115anyway. 2116 2117The ext2fs_open() checks the validity of the blocksize parameter 2118passed to it earlier, to avoid doing some needless work when it would 2119fail anyway. 2120 2121Disable a very annoying automatic "%.sh -> %" GNU make rule in the 2122top-level Makefile. That automatic rule is used to better support 2123SCCS, but it caused problems for a particular niche distribution which 2124likes to use configure.sh files to store the configure options used to 2125build a package. Unfortuntaely GNU make will use the configure.sh to 2126replace the configure script, resulting in a self-inflicted fork bomb 2127leading to an out-of-memory crash. 2128 2129To support old GNU C compilers don't use C99/C++ comments, but only 2130K&R style comments, and don't try to use __builtin_expect if __GNUC__ 2131is less than 3. (__builtin_expect is only supported for gcc versions 21322.96 and up, and it's tricky to check for gcc 2.95 vs gcc 2.96; since 2133this is an optimization, we only try to use __builtin_expect for gcc 3 2134and up.) 2135 2136In e2fsck's crc routines, make sure we use WORDS_BIGENDIAN instead of 2137__LITTLE_ENDIAN, which are only defined by glibc's header files and 2138hence isn't portable. 2139 2140For the convenience for some distributions that need a static tune2fs, 2141the Makefile for misc/ now has a tune2fs.static target. 2142 2143The ext2fs_block_iterate2() function now supports BLOCK_FLAG_APPEND 2144for extent-based files 2145 2146The ext2fs_bmap() function now supports BMAP_ALLOC for extent-based 2147files. 2148 2149All source files no longer have any trailing white space. 2150 2151The io_channel_read_blk64() and io_channel_write_blk64() functions are 2152now functions instead of C preprocessor macros to provide better 2153forward compatibility. 2154 2155The e2fpsrogs translation template now expands the @x abbrevation. 2156 2157Various namespace leackages in libblkid, libe2p, and libext2fs have 2158been fixed. 2159 2160Fix a parallel build problem in e2fsprogs. 2161 2162E2fsprogs is now more portable to Solaris. 2163 * blkid no longer assumes that the TIOCGSIZE and TIOCGWINSZ ioctl's 2164 are always present. 2165 * Scripts do not assume that /bin/true is always in /bin 2166 * Don't use __FUNCTION__ since Solaris's C99 doesn't support it. 2167 * Flush stdio handles before calling setbuf(), since Solaris will 2168 discard any pending output to the stream. 2169 * Define _XOPEN_SOURCE to 600 since Solaris's header files are very 2170 picky about which C compiler can beused for SUSv3 conformance. 2171 Use of C99 is not compatible with SUSv2 (_XOPEN_SOURCE=500), 2172 and C89 is not compatible with SUSv3 (_XOPEN_SOURCE=600). 2173 Since we need some SUSv3 functions, consistently use SUSv3 so 2174 that e2fsprogs will build on Solaris using c99. 2175 * Solaris C99 does not support varargs C preprocessor macros 2176 * Solaris header files pollute the C namespace if in/netinet.h 2177 is included, which conflicts with e2fsprogs' use of the kmem_cache_t 2178 typedef. 2179 * Solaris ships with a pathetically ancient shell in /bin/sh so we 2180 avoid the use of various more avanced shell constructs such as $(). 2181 2182The "make rpm" command will now take some extra configure optiosn from 2183the build environment without needing to patch the source tree. 2184 2185The ext2fs_add_dir_block() function will now grow the dblist more 2186aggressively as an optimization to avoid copying the array too often. 2187 2188The e2fsck_write_bitmaps() will write the block and inode bitmaps 2189together instead of in two passes. 2190 2191 2192E2fsprogs 1.41 (July 10, 2008) 2193============================== 2194 2195Add support for ext4 filesystem features, in particular extents, 2196uninit_bg, flex_bg, huge_file, and dir_nlink features. Also add 2197support for checking journal checksums. Debugfs will print new 2198superblock and inode fields that were defined for ext4. For example, 2199the nanosecond and i_version fields of an inode, and the 2200s_min_extra_isize and s_wanted_extra_isize fields from the superblock. 2201Note: Resize2fs doesn't currently support the combination of flex_bg 2202and !resize_inode. (Addresses Debian Bug: #388452, #425477) 2203 2204Tune2fs can support migrating a filesystem from using 128 byte inodes 2205to 256 byte inodes, so it can take advantage of the full features of 2206ext4. 2207 2208Add support for "undo" support. E2fsck and mke2fs can optionally 2209record an undo log which can replayed by the program e2undo. 2210 2211E2fsck could damage a filesystem by trying to relocate inode tables 2212due to corrupted block group descriptors, where the attempted inode 2213table relocation would do far more harm than good. E2fsck has been 2214fixed to detect this these sorts of corrupted block group descriptors 2215much earlier in e2fsck processing, so it can try to use the backup 2216superblock and block group descriptors first. This should be a much 2217better strategy for recovering these types of corrupted filesystems. 2218(Addresses Sourceforge Bug: #1840291) 2219 2220E2fsck will display a more understandable message when the last check 2221field in the superblock is in the future. (Addresses Debian Bug: 2222#446005). 2223 2224E2fsck now performs more extensive and careful checks of extended 2225attributes stored in the inode. 2226 2227Enhance mke2fs to print a more explanatory error message when 2228ext2fs_get_device_size() returns EFBIG. (Addresses Debian Bug: 2229#488663) 2230 2231Fix mke2fs to use a default block size of 4k when formatting an 2232external journal device. This is done by using a fixed filesystem 2233type list that consists only of the single filesystem type "journal" 2234when looking up configuration keys in /etc/mke2fs.conf. (Addresses 2235Debian Bug: #488663) 2236 2237Speed up how mke2fs writes the journal data blocks by writing the disk 2238blocks in larger chunks. 2239 2240Fix blkid handling of stale devices. Fix a bug which could cause a 2241core dump while garbage collecting the blkid cache, and assure that 2242blkid_find_dev_with_tag() never returns a non-existent device. Also, 2243if a filesystem is found at a new /dev location, eliminate any 2244duplicate stale entries which can not be verified. 2245(Addresses Debian Bugs: #487758, #487783) 2246 2247Add more paranoid checks for LVM volumes and swap partitions in 2248blkid's probe function, to reduce the chances of false positives. 2249 2250The mke2fs program now has a much more sophisticated system for 2251controlling configuration parameters of a newly created filesystem 2252based on a split filesystem and usage type system. The -t option to 2253mke2fs was a deprecated alias to -c; it now specifies a filesystem 2254type (ext2, ext3, ext4, etc.), while the -T option can now be a comma 2255separated usage list. The filesystem type information and type 2256information is used to extract configuration parameters from the 2257/etc/mke2fs.conf file. 2258 2259The mke2fs program will no longer complain and request the -f option 2260when the user tries to create a filesystem with greater than 2**31 2261blocks. 2262 2263When creating a filesystem for the GNU Hurd use a fs-type of Hurd and 2264adjust the mke2fs.conf file so filesystems for the Hurd are created 2265with a blocksize of 4096 and inode size of 128, which is all it knows 2266how to handle. (Addresses Debian Bug: #471977) 2267 2268Mke2fs will always make sure that lost+found always has at least 2 2269blocks, even for filesystems with very large blocksizes (i.e., 64kb). 2270 2271Resize2fs will now print the minimum needed filesystem size if given 2272the -P option, and will resize the filesystem to the smallest possible 2273size if given the -M option. 2274 2275Fix resize2fs to clean up the resize_inode if all of the reserved gdt 2276blocks are consumed during an off-line resize. 2277 2278The "ls" command in debugfs now supports the -p option, which causes 2279it to quote the filenames so that spaces or tabs in directory entries 2280are easily visible. (Addresses Red Hat Bugzilla: #149480; Addresses 2281Sourceforge Feature Request: #1201667) 2282 2283Fix a potential off-by-one buffer oveflow in the fs_device_name in an 2284e2image file. 2285 2286The chattr program will return a non-zero exit code in case of 2287failures, and error messages can be suppressed with the -f option. 2288(Addresses Red Hat Bugzilla: #180596) 2289 2290Fix a bug in badblocks which caused it to overrun an array and likely 2291crash if more than 8 test patterns are specified using the -t option. 2292(Addresses Debian Bug: #487298) 2293 2294Add support to badblocks to limit how quickly it reads from the disk 2295drive (so it can be used for background scrubbing), and so it will 2296abort after finding a given number of errors. 2297 2298Remove support for the legacy big-endian filesystem format which only 2299existed on extremely long-dead PowerPC kernels almost a decade ago. 2300 2301Remove MASIX support from e2fsprogs. 2302 2303Add I/O statistics reporting to e2fsck. 2304 2305Update Vietnamese, Polish, French, Spanish, German, Catalan, Dutch, 2306Czech translations. 2307 2308Fixed various Debian packaging issues --- see debian/changelog for 2309details. (Addresses Debian Bugs: #487443, #487675, #490003) 2310 2311Fixed spelling mistakes, typos, and otherwise clarified man pages. 2312(Addresses Debian Bugs: #393313, #487849, #440983, #440981) 2313 2314Programmer's Notes 2315------------------ 2316 2317Factor out bitmap code in preparation for adding 64-bit new-style 2318bitmaps. 2319 2320Fix gcc -Wall warnings 2321 2322Fix the pkg-config files so that private librares are specified in 2323"Libs.private:". 2324 2325Fix the libext2fs.texinfo manual so it builds with modern versions of 2326texinfo. 2327 2328Silence the makefile from showing the awk command used to build the 2329 2330Clean up the badblocks group so to make it more portable and robust. 2331 2332Avoid using predictable filenames in /tmp in blkid's regression test 2333suite. Also remove bashism's in the regression test script. 2334 2335If the configure script is given --with-diet-libc, don't use thread 2336local storage, since diet libc doesn't support TLS. (Addresses 2337Sourceforge Bug: #2000654) 2338 2339Fix the blkid regression test suite to tolerate older versions of 2340mkswap that don't support the -U option. 2341 2342A few library routines have been converted to support 64-bit block 2343numbers; in particular, the I/O manager functions, the test_io, 2344inode_io, and unix_io managers have all be converted to support 64-bit 2345operation. 2346 2347Debugfs can now be extended for use by test programs. See 2348lib/ext2fs/extents.c for an example for how it can be used. The test 2349program links against the debugfs object files, and provides 2350additional commands by defining an auxiliary libss command table. 2351 2352The lazy_bg filesystem feature, which was only used by developer's 2353testing, has been removed since it has been largely supplanted by 2354uninit_bg. This also simplifies the code. 2355 2356 2357E2fsprogs 1.40.11 (June 17, 2008) 2358================================= 2359 2360Mke2fs, tune2fs, and resize2fs now use floating point to calculate the 2361percentage of reserved blocks. (Addresses Debian Bug: #452639) 2362 2363Updated Spanish and Catalan translations. 2364 2365Fixed various Debian packaging issues --- see debian/changelog for 2366details. (Addresses Debian Bugs: #483962, #483023) 2367 2368Add detection for ZFS volumes to the libblkid library. 2369 2370Fixed spelling mistakes, typos, and otherwise clarified man pages. 2371(Addresses Debian Bug: #486463) 2372 2373Programmer's notes: 2374------------------- 2375 2376Fix marginal C code in probe_lvm2() function to the blkid library more 2377portable for older compilers. 2378 2379Fix build problems on MacOS X. (Addresses Sourceforge Bug: #1972473) 2380 2381Fix ext2fs_swap{16,32,64} functions so they can be used by external 2382applications on big-endian machines. (Addresses Debian Bug: #484879) 2383 2384 2385E2fsprogs 1.40.10 (May 21, 2008) 2386================================ 2387 2388When deciding whether or not to revalidate a blkid cache entry, if the 2389device's mtime is newer than the last time the cached entry was 2390validated, force a revalidation. 2391 2392Fix a potential data corruption bug in e2fsck in the journal replay. 2393The chances of this is happening is extremely remote, especially the 2394default data=ordered or data=writeback modes. However, if a block 2395which has been journalled starts with the first four bytes 0xc03b3998, 2396when e2fsck replays the journal, those four bytes will be replaced 2397with zero's. Fortunately, it is highly, highly unlikely for e2fsck 2398metadata to begin with those fatal 4 byte sequence, and unless 2399data=ordered mode is in use, data blocks are never journaled. 2400 2401Updated German, Dutch, Sweedish, and Vietnamese translations. 2402 2403Programmer's notes: 2404------------------- 2405 2406Fixed various Debian packaging issues --- see debian/changelog for 2407details. 2408 2409Remove default sizes of types when cross compiling, since autoconf 24102.50 can figure this out automatically now. 2411 2412 2413E2fsprogs 1.40.9 (April 27, 2008) 2414================================= 2415 2416SuSE's security team audited uuidd and came up with a few minor 2417issues. None of them are serious given that uuidd runs setuid as a 2418unprivileged user which has no special access other than libuuid 2419directory, but it's good to get them fixed. 2420 2421One additional fix in ext2fs_swap_inode_full() needed for resize2fs to 2422work correctly with in-inode extended attributes. 2423 2424Updated German, Czech, Dutch, French, Polish, Sweedish, and Vietnamese 2425translations. 2426 2427Debugfs will avoid using a pager if the standard output is not a tty. 2428 2429Fix debugfs and tune2fs to correctly handle daylight savings time when 2430parsing a time string. 2431 2432Fixed spelling mistakes, typos, and otherwise clarified man pages. 2433 2434Fix fsck completion bars when multiple filesystems were being checked 2435in parallel. (Addresses Debian Bug: #432865, Addresses Launchpad Bug: 2436#203323, Addresses Sourceforge Bug: #1926023) 2437 2438Fix fsck so that progress information is sent back correctly when 2439multiple filesystems are being check and the output of fsck is being 2440redirected to a file descriptor. Also, include the device name (w/o 2441spaces) in the progress information sent back via a file descriptor. 2442(Addresses Launchpad Bug: #203323, Addresses Sourceforge Bug: 2443#1926023) 2444 2445Teach fsck to treat "ext4" and "ext4dev" as ext* filesystems. 2446 2447If logsave receives a SIGTERM or SIGINT signal, it will now pass that 2448signal to its child process. 2449 2450Fix mke2fs's creation of are resize inode when there is a non-standard 2451s_first_data_block setting. 2452 2453Fix bug in blkid when run by an unprivileged user; most devices were 2454not reported correctly. 9Addresses Launchpad Bug: #220275) 2455 2456Mke2fs will not allow the logically incorect combination of 2457resize_inode and meta_bg, which had previously caused mke2fs to create 2458a corrupt fileystem. 2459 2460Fix fsck in German locales so that a 'j' means yes. 2461(Addresses Sourceforge Bug: #1947683) 2462 2463 2464Programmer's notes: 2465------------------- 2466 2467Fixed various Debian packaging issues --- see debian/changelog for 2468details. 2469 2470Update valgrind options in test_script to work with valgrind 3.2.3 2471 2472Update texinfo.tex to a much newer version from the FSF. 2473 2474Remove bashism for configure script and from the lib/ss Makefile. 2475Addresses Sourceforge Bug: 1921969 2476 2477Fix some silently broken tests: m_no_opt, m_meta_bg, and m_raid_opt. 2478 2479Fix build system so that if texinfo is not installed, it won't print a 2480(harmless) error message. 2481 2482 2483E2fsprogs 1.40.8 (March 13, 2008) 2484================================= 2485 2486Fixed e2image -I so it works on image files which are larger than 2GB. 2487 2488Fixed e2fsck's handling of directory inodes with a corrupt size field. If 2489the size is larger than the number of blocks found in the inode, don't 2490try to allocate extra empty blocks at the end of the directory to make 2491up the difference; there's no point to doing that. In addition, if 2492the size is not a multiple of a blocksize, always fix it. 2493 2494E2fsck handled a pass 2 "should never happen error" by not giving 2495enough information and then core dumping. Unfortunately, it was all 2496too easy to trigger the "should never happen" situation if a 2497directory's inode size was not correct. This has been fixed, but 2498e2fsck has also been taught how to handle this situation more 2499gracefully, by simply removing the inode hash tree information, so 2500that it can be rebuilt again after e2fsck's pass 3. (Addresses 2501Launchpad Bug: #129395) 2502 2503Resize2fs had a bug resizing large inodes with extended attributes 2504that was fixed in 1.40.6; unfortunately, it turned out it wasn't fixed 2505completely on big-endian systems such as PowerPC. The bug should be 2506completely fixed now. Yay for regression test suites. (Addresses Red 2507Hat Bugzilla: #434893) 2508 2509Updated German, Czech, Dutch, Polish, Sweedish, and Vietnamese 2510translations. Many thanks to Philipp Thomas from Novell for stepping 2511up to become the new German translation maintainer! (Addresses Debian 2512Bugs: #302512, #370247, #401092, #412882). 2513 2514When e2fsck is clearing a corrupt inode's HTREE directory information, 2515make it clear that it is just clearing the HTREE information, not the 2516entire inode. 2517 2518Fixed spelling mistakes, typos, and otherwise clarified man pages. 2519 2520Programmer's notes 2521------------------ 2522 2523Add new functions, ext2fs_dblist_get_last() and 2524ext2fs_dblist_drop_last(), which allows the caller to examine the last 2525directory block entry added to the list, and to drop if it necessary. 2526 2527Fixed a portability problem in libblkid with DJGPP. 2528 2529Fix an obvious typo in an "internal error" message in e2fsck. Thanks 2530to Philipp Thomas for pointing this out. 2531 2532If the info files are not built, change "make install" so it doesn't 2533fail with an error code. 2534 2535 2536E2fsprogs 1.40.7 (February 28, 2008) 2537==================================== 2538 2539Remove support for clearing the SPARSE_SUPER feature from tune2fs, and 2540depreciate the -s option, since it can result in filesystems which 2541e2fsck can't fix easily. There are very good reasons for wanting to 2542disable sparse_super; users who wants to turn off sparse_super can use 2543debugfs. (Addresses Sourceforge Bug: #1840286) 2544 2545Add missing options to mke2fs's usage message. (Addresses Sourceforge 2546Bug: #1751393) 2547 2548Fix bug in resize2fs when large (greater than 128 byte) inodes are 2549moved when a filesystem is shrunk; it was only moving the first 128 2550bytes, so extended attributes were not getting moved. (Addresses Red 2551Hat Bugzilla: #434893) 2552 2553E2fsck now prints an explicit message when the bad block inode is 2554updated, to avoid confusion about why the filesystem was modified. 2555(Addresses Sourceforge Bug: #756460) 2556 2557Allow mke2fs and tune2fs manipulate the large_file feature. 2558Previously we just let the kernel and e2fsck do this automatically, 2559but e2fsck will no longer automatically clear the large_file feature. 2560It still isn't really necessary to worry about this feature flag 2561explicitly, but some users seem to care. (Addresses Red Hat Bugzilla: 2562#258381) 2563 2564Suppress message about an old-style fstab if the fstab file is empty. 2565(Addresses Debian Bug: #468176) 2566 2567Fix (really minor) bug in debugfs's find_free_block so it avoids 2568reporting a free block more than once if there are too few free blocks 2569in the filesystem. (Addresses Sourceforge Bug: #1096315) 2570 2571Change e2fsck to no longer clear the LARGE_FILES feature flag 2572automatically, when there are no more > 2GB files in the filesystem. 2573It's been almost a decade since there have been kernels that don't 2574support this flag, and e2fsck clears it quietly without telling the 2575user why the filesystem has been changed. 2576 2577Fix bug which could cause libblkid to seg fault if a device mapper 2578volume disappears while it is being probed. (Addresses RedHat 2579Bugzilla: #433857) 2580 2581Inhance e2fsck's reporting of unsupported filesystem feature flags. 2582(Addresses Sourceforge Feature Request: #1175808) 2583 2584Fix option syntax in dumpe2fs for explicit superblock and blocksize 2585parameters. What was currently documented in the man page has been 2586broken for some time, due to getopt() implementation changes. The 2587option sytax has been changed to one which is can be more portable 2588supported and which is consistent with the format for extended options 2589in mke2fs and tune2fs. (Addresses Sourceforge Bug: #1830994) 2590 2591Add support to tune2fs to clear the resize_inode feature. This 2592requires an fsck afterwards. (Addresses Red Hat Bugzilla: #167816) 2593 2594Teach blkid to detect LVM2 physical volumes. (Addresses Red Hat 2595Bugzilla: #409321) 2596 2597Add support for setting RAID stride and stripe-width via mke2fs and 2598tune2fs. Teach dumpe2fs to print the RAID parameters. 2599 2600Add support for setting new superblock fields to debugfs's 2601set_super_value. 2602 2603Add support for printing "mostly-printable" extended attributes in 2604Debugfs. 2605 2606Add support for the -M option to fsck, which causes it to ignore 2607mounted filesystem. 2608 2609Fix uuidd so that it creates the pid file with the correct pid number. 2610(Addresses Sourceforge Bug: #1893244) 2611 2612Fix various gcc -Wall warnings. 2613 2614Update Czech, Dutch, Polish, Sweedish, and Vietnamese translations 2615 2616Fixed spelling mistakes, typos, and otherwise clarified man pages. 2617(Addresses Sourceforge Patch: #1399325) 2618 2619 2620Programmer's notes: 2621------------------- 2622 2623Fixed various Debian packaging issues --- see debian/changelog for 2624details. (Addresses Debian Bug: #466929) 2625 2626Add new flag EXT2_FLAG_NONFREE_ON_ERROR ext2fs_open2() which returns a 2627partially filled-in filesystem object on an error, so that e2fsck can 2628print more intelligent error messages. 2629 2630Add a new function e2p_edit_feature2() which allows the caller to 2631specify which feature flags are OK to set or clear, and which returns 2632more specific information about feature flags which are not allowed to 2633be set/cleared. 2634 2635Set the C locale in the test_script driver since it uses [A-Za-z]. 2636(Addresses Sourceforge Bug: #1890526) 2637 2638Use fcntl locking instead of lockf in libuuid since Cygwin doesn't 2639support lockf(). 2640 2641Change configure.in to avoid using the 'dc' command unless it is 2642absolutely needed. (i.e., when using parsing a WIP-style version 2643number) (Addresses Sourceforge Bug: #1893024) 2644 2645Add portability checks to support compilation under DJGPP. 2646 2647Update to the latest samba tdb code before the LGPLv3 change, which 2648fixes a realloc() leak on failure. 2649 2650Fix memory leak in ext2fs_alloc_block(). 2651 2652Fix makefile dependency issues for various install targets. 2653(Addresses-Sourceforge-Patches: #1903484, #1903466, #1903456) 2654 2655Improve descriptions for the r_move_itable and r_resize_inode tests. 2656 2657 2658E2fsprogs 1.40.6 (February 9, 2008) 2659=================================== 2660 2661Add support for returning labels for UDF filesystems in the blkid 2662library. 2663 2664Fix bug in the blkid library where cached filesystems was not being 2665flushed when opening USB devices returned the error ENOMEDIUM. 2666(Addresses Debian Bug: #463787) 2667 2668Added logic to the blkid library to automatically choose whether a 2669filesystem should be mounted as ext4 or ext4dev, as appropriate. 2670 2671Allow tune2fs to set and clear the test_fs flag on ext4 filesystems. 2672 2673Fix a bug in e2fsck which caused it to core dump if e2fsprogs had been 2674configured with --enable-jbd-debug. 2675 2676Document the BLKID_FILE environment variable in the libblkid man page 2677 2678Programmer's Notes: 2679------------------- 2680 2681Update e2fsprogs translation template and Vietnamese and Czech translations 2682 2683Fixed various Debian packaging issues --- see debian/changelog for 2684details. (Addresses Debian Bugs: #436058) 2685 2686Don't try to create $DESTDIR/etc/init.d as part of make install as we 2687don't install the init.d script (and it's not the recommended way to 2688start uuidd anyway). (Addresses Sourceforge Bug: #1885085) 2689 2690Use thread local storage to fix a theoretical race condition if two 2691threads try to format an unknown error code at the same time in the 2692com_err library. 2693 2694 2695E2fsprogs 1.40.5 (January 27, 2008) 2696=================================== 2697 2698Fix a potential overflow big in e2image if the device name is too 2699long. 2700 2701Mke2fs will now create new filesystems with 256 byte inodes and the 2702ext_attr feature flag by default. This allows for much better future 2703compatibity with ext4 and speeds up extended attributes even on ext3 2704filesystems. 2705 2706Teach e2fsck to ignore certain "safe" filesystem features which are 2707set automatically by the kernel. Having the kernel set features 2708automagically behind the user's back is a bad idea, and we should try 2709to break the kernel of this habit, especially for the newer ext4 2710feature flags. But for now, we will try to avoid needless full checks 2711which can annoy users who are doing fresh installs. 2712 2713Add support in tune2fs and mke2fs for making a filesystem as being "ok 2714to be used with test kernel code". This will be needed for using test 2715filesystems with the latest ext4 kernel code. 2716 2717Change e2fsck -fD so that it sorts non-htree directories by inode 2718numbers instead of by name, since that optimizes performances much 2719more significantly. (Addresses-Sourceforge-Feature-Request: #532439) 2720 2721If e2image fills the disk, fix it so it exits right away instead of 2722spewing large numbers of error messages. 2723(Addresses-Sourceforge-Feature-Request: #606508) 2724 2725If ftruncate64() is not available for resize2fs, let it use ftrucate() 2726instead, but have it check to see if the size would get truncated, and 2727skip calling ftruncate in that case. 2728 2729Add support for detecting HFS+ filesystems in the blkid library. 2730 2731Add supprt in the blkid library for ext4/ext4dev filesystems. 2732 2733Fix a bug in blkid where it could die on a floating point exception 2734when presented with a corrupt reiserfs image. 2735 2736Fix blkid's handling of ntfs UUID's so that leading zeros are printed 2737such that UUID string is a fixed length. 2738 2739Add sample python bindings for the uuid library to the contrib 2740directory. (Addresses-Sourceforge-Patches: #778817) 2741 2742Fix debugfs's 'lsdel' command so it uses ext2fs_block_iterate2 so it 2743will work with large files. (Addresses Sourceforge Feature Request: 2744#1257500 and Sourceforge Support Request: #1253511) 2745 2746Allow the debugfs 'undel' command to undelete an inode without linking 2747it to a specific destination directory, since this might require 2748allocating blocks that could overwrite some yet-to-be-recovered 2749deleted files. (Addresses-Sourceforge-Feature-Request: #967141) 2750 2751Update Swedish translations from the Translation Project. 2752 2753Programmer's Notes: 2754------------------- 2755 2756Fix configure handling of --sbindir (which should rarely be used, but 2757someone did complain, so let's fix it). (Addresses Sourceforge Bug: 2758#498381) 2759 2760Updated e2fsprogs.spec file to include a new uuidd package 2761 2762Use pkg-config to determine where to find the devmapper library so we 2763can find out where it is located on different distributions. 2764 2765Fix Makefile race so that "make -j3 distclean" works correctly 2766 2767Fix portability problems on non-Linux/non-Hurd/non-Masix systems, 2768especially on MacOS X systems. (Addresses Sourceforge Bugs: #1861633, 2769#1819034, #1863819) 2770 2771Fixed spelling mistakes, typos, and otherwise clarified man pages. 2772 2773Fixed various Debian packaging issues --- see debian/changelog for 2774details. (Addresses Debian Bugs: #459403, #459475, #459614) 2775 2776Remove the --enable-dynamic-static configure option, and build e2fsck 2777dynamically by default. If the user wants e2fsck.static, he/she will 2778need to build it via "make -C e2fsck e2fsck.static" 2779 2780Fix various build warnings due to missing prototypes. 2781(Addresses Sourceforge Patch: #1861663, #1861659) 2782 2783 2784E2fsprogs 1.40.4 (December 31, 2007) 2785==================================== 2786 2787Improve time-based UUID generation. A new daemon uuidd, is started 2788automatically by libuuid if necessary. This daemon is setuid to allow 2789updates to /var/lib/libuuid, so the clock sequence number can be 2790stored and so if the clock is set backwards, it can be detected. 2791(Addresses Sourceforge Bug: #1529672, Addresses Red Hat Bugzilla: 2792#233471) 2793 2794Filter out the NEEDS_RECOVERY feature flag when writing out the backup 2795superblocks. This avoids e2fsck from concluding that a full 2796filesystem check is required before backing up the superblock due to 2797changes in the feature flags. (Addresses Debian Bug: #454926) 2798 2799Fix fsck to only treat the '#' character as a comment at the beginning 2800of the line in /etc/fstab. Otherwise fstabs for the fuse filesystem 2801will cause fsck to issue an bogus warning message. 2802(Addresses Gentoo bug: #195405, Addresses Sourceforge bug: #1826147) 2803 2804Format control characters and characters with the high eighth bit set 2805when printing the contents of the blkid cache, to prevent filesystems 2806with garbage labels from sending escape sequences to the user's screen 2807that might, for example place it in graphics mode. (Addresses Ubuntu 2808Bug: #78087) 2809 2810Fix sign-extension problem on 64-bit systems in in the com_err 2811library. (Addresses Sourceforge Bug: #1809658) 2812 2813Avoid division by zero error when probing an invalid FAT filesystem in 2814the blkid library. (Addresses Sourceforge Bug: #1831627) 2815 2816Update Dutch, Polish, and Vietnamese translations from the Translation 2817Project. Remove the Rwandan translation upon advice of the 2818Translation Project. 2819 2820Programmer's Notes: 2821------------------- 2822 2823Fix the libss "make check" regression test so that it works if the 2824current directory is not in the user's path or if the libss shared 2825library is not installed. (Addresses Sourceforge Bug: #1848974) 2826 2827Fixed spelling mistakes, typos, and otherwise clarified man pages. 2828(Addresses Debian Bugs: #444883, #441872) 2829 2830Fixed various Debian packaging issues --- see debian/changelog for 2831details. (Addresses Debian Bugs: #437720, #451172, #458017) 2832 2833Fix build failure on non-Linux/non-Hurd/non-Masix systems. 2834(Addresses Sourceforge Bug: #1859778) 2835 2836Fix Hurd portability issues. (Addresses Debian Bug: #437720) 2837 2838 2839E2fsprogs 1.40.3 (December 5, 2007) 2840=================================== 2841 2842Fix a potential security vulnerability where an untrusted filesystem 2843can be corrupted in such a way that a program using libext2fs will 2844allocate a buffer which is far too small. This can lead to either a 2845crash or potentially a heap-based buffer overflow crash. No known 2846exploits exist, but main concern is where an untrusted user who 2847possesses privileged access in a guest Xen environment could corrupt a 2848filesystem which is then accessed by the pygrub program, running as 2849root in the dom0 host environment, thus allowing the untrusted user to 2850gain privileged access in the host OS. Thanks to the McAfee AVERT 2851Research group for reporting this issue. (Addresses CVE-2007-5497.) 2852 2853Fix hueristics in blkid which could cause a disk without partitions to 2854be incorrectly skipped when a loopback device is present. (Addresses 2855Red Hat Bugzilla #400321.) 2856 2857Fix e2image so that in raw mode it does not create an image file which 2858is one byte too large. 2859 2860Change mke2fs's usage message so it recommends the preferred -E option 2861instead of the deprecated -R option. 2862 2863Enhance the blkid library so it will recognize squashfs filesystems. 2864(Addresses Red Hat Bugzilla #305151.) 2865 2866Enhance e2fsck so it will force the backup superblocks to be backed up 2867if the filesystem is consistent and key constants have been changed 2868(i.e., by an on-line resize) or by e2fsck in the course of its 2869operations. 2870 2871Enhance blkid's detection of FAT filesystems; so that USB disks with 2872only a single bootable partition will not get missed. 2873 2874E2fsck will no longer mark a filesystem as invalid if it has time 2875errors (i.e., if superblock mount time or last write time is in the 2876future) and the user refuses to fix the problem. 2877 2878The Ubuntu init scripts don't properly set the system time correctly 2879from hardware clock if the hardware clock is configured to tick local 2880time instead of GMT time. Work around this as best as we can by 2881providing an option, buggy_init_scripts, in /etc/e2fsck.conf which can 2882be set on Ubuntu systems. (Addresses Debian Bug #441093, and Ubuntu 2883Bug #131201.) 2884 2885Fix fsck to ignore /etc/fstab entries for bind mounts. (Addresses Red 2886Hat Bugzilla #151533.) 2887 2888Fix e2fsck so that if the superblock is corrupt, but still looks 2889vaguely like an ext2/3/4 superblock, that it automatically tries to 2890fall back to the backup superblock, instead of failing with a hard 2891error. 2892 2893Make the e2fsprogs program more robust so that they will not crash 2894when opening a corrupt filesystem where s_inode_size is zero. 2895 2896Change e2fsck so it uses sscanf() instead of atoi() so it non-numeric 2897arguments are detected as such and the parse error is reported to the 2898user. (Addresses Debian Bug #435381.) 2899 2900Change e2fsck so it will not complain if a file has blocks reallocated 2901up to the next multiple of a system's page size. 2902 2903Fix bug in ext2fs_check_desc() which will cause e2fsck to complain 2904about (valid) filesystems where the inode table extends to the last 2905block of the block group. (Addresses Red Hat Bugzilla #214765.) 2906 2907Fix a bug in ext2fs_initialize() which causes mke2fs to fail while 2908allocating inode tables for some relatively rare odd disk sizes. 2909(Addresses Red Hat Bugzilla #241767.) 2910 2911Add Catalan translation and update Dutch and Swedish translations 2912from the Translation Project. 2913 2914Fix big-endian byte-swapping bug in ext2fs_swap_inode_full(). We 2915still had an issue when trying to figure out whether we need to 2916byte-swap fast symlinks that contained extended attributes. 2917 2918Fixed spelling mistakes, typos, and otherwise clarified man pages. 2919(Addresses SourceForge Bug #1821333.) 2920 2921 2922Programmer's Notes: 2923------------------- 2924 2925Fix mke2fs tests to avoid needing any significant ^M (CR) characters 2926 2927Add "make check" to the RPM spec file 2928 2929Fix "make install" and 'make unstall" in misc/Makefile.in so that it 2930works correctly when the prefix is not the root directory. 2931 2932Fix the resize2fs tests, r_move_itable and r_resize_inode, so they 2933clena up after themselves by deleting the test.img temporary file 2934after completing the test. 2935 2936Fixed a corner case bug ext2fs_unlink() when trying to delete the 2937first directory entry in a directory block and the last directory 2938entry in the previous directory block is not in use. Fortunately 2939ext2fs_unlink() is only used by debugfs and e2fsck, and in e2fsck in 2940places where it is extremely unlikely to run into this corner case. 2941 2942Fix missing dependency which would cuase parallel builds to fail. 2943(Addresses Sourceforge Bug #1842331.) 2944 2945Fix a build error on newer gcc caused by lib/ext2fs/ismounted.c 2946calling open(O_CREATE) with a missing mode parameter. 2947 2948Fix the test_ss.c in lib/ss so it can be used as an example 2949application program for the library as well as a regression test 2950suite. 2951 2952Fix ext2fs_dblist_dir_iterate() so that error codes and abort codes 2953are properly passed back up through the call stack. 2954 2955E2fsprogs 1.40.2 (July 12, 2007) 2956================================ 2957 2958A recent change to e2fsck_add_dir_info() to use tdb files to check 2959filesystems with a very large number of filesystems had a typo which 2960caused us to resize the wrong data structure. This would cause a 2961array overrun leading to malloc pointer corruptions and segfaults. 2962Since we normally can very accurately predict how big the the dirinfo 2963array needs to be, this bug only got triggered on very badly corrupted 2964filesystems. 2965 2966Fix a bug in e2fsck which caused it to incorrectly salvange 2967directories when the last entry's rec_len is bogusly too big. This 2968resulted in a nonsense filesystem corruption to be reported, and 2969required a second run of e2fsck to fully fix up the directory. 2970 2971Update tune2fs man page to include more discussion of reserved blocks 2972(Addresses Launchpad bug #47817) 2973 2974Update Turkish, Polish, Dutch, and Vietnamese PO files from the 2975Translation Project 2976 2977 2978E2fsprogs 1.40.1 (July 7, 2007) 2979=============================== 2980 2981Fix bug which could cause libblkid to loop forever. When revalidating 2982a partition where there is obsolete information in /etc/blkid.tab, we 2983end up freeing a the type tag without clearing dev->bid_type, causing 2984blkid_verify() to loop forever. (Addresses Debian Bug: #432052) 2985 2986The Turkish translation has a bug in it where it has the translation 2987of "E@e '%Dn' in %p (%i)" to "E@E". This causes @E to be expanded at 2988@E, recursively, forever, until the stack fills up and e2fsck core 2989dumps. We fix this by making e2fsck stop @-expansions after a 2990recursive depth of 10, which is far more than we need. 2991(Addresses Sourceforge Bug: #1646081) 2992 2993Compile the default mke2fs.conf into mke2fs program. People are 2994getting surprised by mke2fs creating filesystems with different 2995defaults than earlier versions of mke2fs if mke2fs.conf is not 2996present. So we now create a built in version of mke2fs.conf file 2997which is used by mke2fs if the /etc/mke2fs.conf is not present. 2998(Addresses SourceforgeBug: #1745818) 2999 3000Improve the config/parse_types.sh helper script. Fix a potential 3001security problem if e2fsprogs is built as root (as Gentoo does!). In 3002addition fix the script and how it is called from the configure script 3003so that it does the right thing when cross-compiling. (Fixes Gentoo 3004bug: #146903) 3005 3006Update Vietnamese, French, and Dutch PO files from the Translation 3007Project. Also created a new e2fsprogs.pot file for translator. 3008 3009Fix bogus strip permission errors when building under Debian. When 3010building the e2fsprogs dpkg's, the dh_strip command emits a large 3011number of error messages caused by the permissions not being right. 3012So run dh_fixperms before running dh_strip. 3013 3014Programmer's Notes: 3015------------------- 3016 3017Add new function: profile_set_default(). This function sets the value 3018of the pseudo file "<default>". If the file "<default>" had 3019previously been passed to profile_init(), then def_string parameter 3020will be parsed and used as the profile information for the "<default>" 3021file. 3022 3023Fix mk_cmds's error reporting so that it is unambiguous that it is the 3024mk_cmds script which is generating the error. (Obviates Gentoo patch: 3025e2fsprogs-1.32-mk_cmds-cosmetic.patch) 3026 3027Fix the test suite to use LC_ALL instead of LANG. LC_ALL is the "high 3028priority" environment variable that overrides all others, where as 3029LANG is the lowest priorty environment variable. If LC_ALL is set, it 3030doesn't matter whether LANG, LANGUAGE, LC_COLLATE, LC_MESSAGES, and 3031the all the rest are set. This will assure that the locale when 3032running the test suites is the "C" locale. (Obviates Gentoo patch: 3033e2fsprogs-1.38-tests-locale.patch) 3034 3035 3036E2fsprogs 1.40 (June 29, 2007) 3037============================== 3038 3039Fix divide by zero error in blkid's NTFS probing logic. 3040 3041Add new blkid -g option which causes the blkid cache to be garbage 3042collected. 3043 3044Fix a bug in libblkid which could cause the internal field bid_type to 3045become corrupted. Fortunately bid_type isn't used much, and bid_label 3046and bid_uuid is only used by debugging code, so the impact of this bug 3047was very minor. 3048 3049Mke2fs will now store the RAID stride value when a filesystem is 3050created with a requested RAID stride, and then use it automatically in 3051resize2fs. 3052 3053Mke2fs has a sanity check added to make sure (inode_size * num_inodes) 3054isn't too big. In some cases Lustre users have tried specifying an 3055inode size of 4096 bytes, while keeping an inode ratio of one inode 3056per 4096 bytes. 3057 3058Improve sanity check in e2fsck's algorithm for finding a backup 3059superblock, so that it won't accidentally find a superblock that was 3060located in the journal, and then later reject it as being not a valid 3061backup superblock. 3062 3063Fix e2fsck get_size logic so that it will work with the Linux floppy 3064driver. The Linux floppy driver is a bit different from the other 3065block device drivers, in that if the device has been opened with 3066O_EXCL, it disallows another open(), even if the second open() does 3067not have the O_EXCL flag. (Addresses Debian Bug: #410569) 3068 3069Fix error checking of badblock's last-block and start-block arguments. 3070(Addresses Debian Bug: #416477) 3071 3072Fix e2fsck so that it doesn't overwrite the backup superblocks when 3073recovering a journal until the master superblock has been confirmed as 3074being sane. 3075 3076Change the blkid library to be much more paranoid about concluding 3077that a partition contains an NTFS filesystem, and fetch the UUID and 3078LABEL information from NTFS filesystems. (Addresses Launchpad Bug: 3079#110138) 3080 3081Factor out the code which sets the default journal size and move it 3082into libext2fs. 3083 3084Enhance e2fsck so it will recreate the ext3 journal if the original 3085journal inode was cleared to due it being corrupt after finishing the 3086filesystem check. 3087 3088Fix e2fsck so that it updates the journal inode if it is corrupted and 3089the backup journal information from the superblock was successfully 3090used to recover the filesystem. 3091 3092Fix e2fsck so that it checks all of the blocks in the journal inode 3093for validity. The original code only checked the direct blocks to 3094make sure the journal inode was sane. Unfortunately, if some or all 3095of the indirect or doubly indirect blocks were corrupted, this would 3096not be caught. 3097 3098Add support in blkid to detect LUKS encrypted partitions. 3099 3100Add extra sanity checks for extended attributes in the case where the 3101size is zero but the offset is very large. 3102 3103Fix byte-swapping issues for large inodes in ext2fs_read_inode_full() 3104and ext2fs_get_next_inode_full(). 3105 3106Clarify the copyright licenses used by the various libraries in 3107the top-level COPYING file (Red Hat Bugzilla: 166058) 3108 3109Make mke2fs's defaults when /etc/mke2fs.conf doesn't exist more sane. 3110 3111Fix mke2fs and debugfs to support large (> 16 bit) uid's and gid's. 3112 3113Remove check in e2fsck which requires EA's in inodes to be sorted; 3114they don't need to be sorted, and e2fsck was previously wrongly 3115clearing unsorted EA's stored in the inode structure. 3116 3117Allow mke2fs or tune2fs to create a substantially larger journal (up 3118to 10,240,000 blocks). 3119 3120Fix MD superblock detection, and make sure the correct UUID is 3121reported from the MD superblock. 3122 3123Fix a signed vs. unsigned bug in debugfs. 3124 3125Enhance debugfs's date parser so that it accepts integer values. 3126 3127Fix e2fsck's pass1c accounting so it doesn't terminate too early if a 3128file with multiply claimed blocks is hard linked. or not at all if the 3129root directory contains shared blocks 3130 3131Enhance debugfs so it can modify the block group descriptors using the 3132command set_block_group_descriptor. 3133 3134Improve e2fsck's reporting of I/O errors so it's clearer what it was 3135trying to do when an error happens 3136 3137Fix a bug in in how e2fsprogs byte swaps inodes containing fast 3138symlinks that have extended attributes. (Addresses Red Hat Bugzilla: 3139#232663 and LTC Bugzilla: #27634) 3140 3141Fix potential file descriptor leak in ext2fs_get_device_size() in an 3142error case. 3143 3144Add libreadline.so.5 support to libss. 3145 3146Impove badblocks -n/-w exclusive usage message. 3147 3148Fix dump_unused segfault in debugfs when a filesystem is not open 3149 3150Fix memory leak in blkid library. (Addresses Debian Bug: #413661) 3151 3152Allow the debugfs lcd command to work w/o a filesystem being open. 3153(Addresses LTC Bugzilla #27513) 3154 3155Fix e2fsck to clear i_size for special devices with a bogus i_blocks 3156field on the first pass. 3157 3158Fix e2fsck to set the file type of the '..' entry when connecting 3159a directory to lost+found. (Addresses Lustre Bug: #11645) 3160 3161Enhance e2fsck to recover directories whose modes field were corrupted 3162to look like special files. This is probably only useful in 3163artificial test cases, but it will be useful if we ever do the "inodes 3164in directory" idea for ext4. 3165 3166Allow debugfs to dump (and rdump) > 2GB files. (Addresses Debian Bug: 3167#412614) 3168 3169Fix resize2fs parsing of size parameter (in sector units). This was 3170actually a bug in libe2p's parse_num_blocks() function. When handling 3171the 's' suffix, it was ignoring the blocksize information passed in 3172from the caller and always interpreting the number in terms of a 1k 3173blocksize. (Addresses Debian Bug: #408298) 3174 3175There was a floating point precision error which could cause e2fsck to 3176loop forever on really big filesystems with a large inode count. 3177(Addresses Debian Bug: #411838) 3178 3179Fix memory leak in ext2fs_write_new_inode() 3180 3181Add support for using a scratch files directory to reduce e2fsck's 3182memory utilization on really big filesystems. This uses the TDB 3183library. See the [scratch_files] section of the e2fsck.conf man page 3184for more details. 3185 3186Fixed type-punning bug which caused dumpe2fs to crash on the Arm 3187platform (Addresses Debian Bug: #397044) 3188 3189Add explanatory message to badblocks that -n and -w are mutually exclusive 3190(Addresses Debian Bug: #371869) 3191 3192Allow debugfs and dumpe2fs to support fs features under development. 3193 3194Add support for the new flag EXT2_FLAG_SOFTSUPP_FEATURES flag to 3195ext2fs_open() , which allows application to open filesystes with features 3196which are currently only partially supported by e2fsprogs. 3197 3198Allow unix_io to support offsets greater than 2G (Addresses 3199SourceForge Bug: #1547922) 3200 3201Fixed overflow and signed/unsigned problems caused by the number of 3202blocks or inodes exceeding 2**31 or being close to 2**32-1. 3203 3204Add support for unsigned directory hash calculations with hints in the 3205superblock to fix cross-architectural portability for htree 3206directories with filenames where the high 8th bit is set. (Addresses 3207Debian: #389772) 3208 3209Fix resize2fs so that it gives user-intelligible error messages if the 3210filesystem or the kernel does not support on-line resizing. 3211(Addresses Debian Bug: #380548) 3212 3213Require mke2fs -F -F for really dangerous operations, since -F is 3214needed for less dangerous operations such as creating filesystems 3215images in regular files, or creating filesystems on whole block 3216devices. These relatively innocuous usages should NOT be confused 3217with running mke2fs on an apparently-mounted or in-use filesystem. 3218 3219Allow the default inode size to be specified into the mke2fs.conf 3220file. 3221 3222Make the smallest default journal size is big enough so that on-line 3223resizing should always work. 3224 3225Fix silly spelling error in e2fsck. (Addresses SourceForge bug: 3226#1531372) 3227 3228Fix debugfs coredump when lsdel is run without an open filesystem 3229(Addresses Debian Bug: #378335) 3230 3231Fix debugfs display bug us that bytes that have the high bit set are 3232displayed as "ec" instead of "ffffffec". 3233 3234Add support in lsattr so it will display the EXT4_EXTENTS_FL flag. 3235 3236Device mapper scanning wasn't working in the blkid library because the 3237pathnames had an extra "/dev" when they were being probed. 3238 3239Add GFS/GFS2 support to the blkid library. 3240 3241Fix blkid support of empty FAT filesystem labels. 3242 3243Avoid recursing forever (or for a long time) when the blkid library 3244searches for a device and there are symlinks to directories in /dev. 3245 3246Avoid unaligned halfword access in blkid when accessing FAT 3247superblocks, as this will cause Sparc/Solaris systems to throw a 3248SIGBUS error. 3249 3250The latest devmapper libraries requires pthreads, add -lpthreads to 3251the static link libraries for e2fsck.static if devmapper is enabled. 3252(Addresses Debian bug: #388718) 3253 3254Improve the (non-installed, for experts only) findsuper program by 3255printing the uuid and label from the superblocks, as well as the 3256starting and ending offsets of the filesystem given the information in 3257the superblock. Omit by default printing superblocks that are likely 3258found in located in an ext3 journal unless an explicit -j option is 3259given. 3260 3261Updated Spanish, French and Dutch translations and added Catalan 3262translation. (Addresses Debian bug: #411562) 3263 3264Use FreeBSD's DIOCGMEDIASIZE and DIOCGDINFO ioctls if available when 3265determining a partition's size, since binary searching to determine 3266the device doesn't work on FreeBSD. 3267 3268Documentation about UUID's is available in enough places, and it's 3269awkward to deal with debian-legal's insanities. So I'm caving in the 3270"more-lunatic-than-RMS" wing of Debian by removing RFC-4122 so we 3271don't have do the dfsg tarball. Also remove the rule that only tried 3272to install RFC-4122 on Ubuntu, since Ubuntu seems to want to fetch 3273e2fsprogs exclusively from Debian. (Addresses Debian Bug: #407107) 3274 3275Fix the info-dir line so that the menu name does not contain a .info 3276prefix. First of all, it's ugly, secondly, it causes the install-info 3277command to fail to remove the com_err info file from the 3278/usr/share/info/dir file when the comerr-dev package is removed and 3279purged. (Addresses Debian Bug: #401711) 3280 3281Fixed spelling mistakes, typos, and otherwise clarified man pages. 3282(Addresses Debian Bug: #369761, #373004, #379695) 3283 3284Fixed various Debian packaging issues --- see debian/changelog for 3285details. (Addresses Debian Bugs #389554, #390664, #413208, #419605, 3286#408352, #415560, #399155) 3287 3288 3289Programmer's notes: 3290------------------- 3291 3292E2fsck now supports the %It expansion when printing a problem report. 3293It will print the type of the inode in the problem context. 3294 3295Fix misc/Makefile.in so that it builds even if e2fsck hasn't been built yet 3296(Addresses Sourceforge Bug: #1565561) 3297 3298Remove unused variables and other lint/gcc -Wall cleanups 3299 3300Add check to ext2fs_get_device_size() so it will return EFBIG for for 3301filesystems contained in regular files where the filesystem image size 3302is returned by stat64(). 3303 3304Set local environment variables to C so mk_cmds and compile_et always 3305work. (Addresses SourceForge Bug: #1532177) 3306 3307Added the 64-bit byte swapping function ext2fs_swab64(). 3308 3309Added two new helper functions to prevent 2**31/2**32-1 overflow 3310problems: ext2fs_div_ceil() and e2p_percent(). 3311 3312Create new ext2fs library inline functions ext2fs_group_first_block() 3313and ext2fs_group_last_block() in order to calculate the starting and 3314ending blocks in a block group. 3315 3316Create the generated files read-only to remind developers not to edit them. 3317 3318Add support for autoconf 2.60 (with backwards compatibility for older 3319versions of autoconf). 3320 3321Added an "make rpm" target to top-level Makefile 3322 3323Added various FreeBSD portability fixes. 3324 3325Exclude mercurial files from the RPM build tree to speed up copy/build. 3326 3327Use root_sysconfdir to define the locations of mke2fs.conf and 3328e2fsck.conf instead of using a hard-coded /etc pathname. 3329 3330Prevent e2fsck.h and ext2_ext_attr.h from getting included multiple times. 3331 3332Fixed "make clean" in blkid's Makefile.in file from removing tst_*.c files. 3333 3334If diff -u is supported, use it to report test failures. 3335 3336Updates/improvements to RPM spec file 3337 3338Add on-disk format definitions for the following new features: 3339EXT4_FEATURE_RO_COMPAT_HUGE_FILE, EXT4_FEATURE_RO_COMPAT_GDT_CSUM, 3340EXT4_FEATURE_RO_COMPAT_DIR_NLINK, EXT4_FEATURE_INCOMPAT_64BIT, 3341EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE 3342 3343Add a new make target "checked-failed" in the tests directory which 3344reruns any failed tests 3345 3346Update draft-leach-uuids-guids-01.txt with rfc4122.txt 3347 3348Fix miscellaneous bugs reported by Coverity: Dead code, potential nul 3349pointer dereferences, memory leaks, etc. None were security-criticial 3350problems. 3351 3352Fix up usage and decrement error messages in the test_icount program 3353 3354Add debugging code to the com_err library; if the environment variable 3355COMERR_DEBUG is set to 1, print out debugging messages as error tables 3356are added and removed from the com_err library. If the 3357COMERR_DEBUG_FILE environment variable is set (and the process is not 3358setuid) the debugging messages may be redirected to a file. 3359 3360Change all of the e2fsprogs programs to use the newer add_error_table() 3361and remove_error_table() interfaces instead of the much older 3362initialize_*_error_table() function. 3363 3364Add TDB support into the ext2fs library. This allows us to have a 3365guaranteed library we can count on always being present so we can 3366store data in an on-disk database. 3367 3368Add support for using TDB to store the icount data, so we don't run out 3369of memory when checking really large filesystems. 3370 3371Change the regression test suite so that it skips empty test directories. 3372 3373Define the l_i_iversion field in ext2_inode. The l_i_version field is 3374now defined from the old l_i_reserved1 field in the ext2 inode. This 3375field will be used to store high 32 bits of the 64-bit inode version 3376number. 3377 3378Add Makefile production rule for e2fsprogs.spec in case it gets 3379deleted. 3380 3381Add new function profile_get_uint() to allow for a clean way to fetch 3382unsigned integers from the context. 3383 3384Add test to make sure the ext2 superblock structure is 1024 bytes. 3385 3386Fix typo in name of f_dup4 regression test 3387 3388Add new function blkid_gc_cache() which performs a garbage collection 3389pass on the /etc/blkid.tab file. 3390 3391The ext2fs_open() function now sets EXT2_FLAG_MASTER_SB_ONLY. In 3392general, only e2fsck (after the filesystem is clean), tune2fs, and 3393resize2fs should change the backup superblocks by default. Most 3394callers of ext2fs_open() should not be touching any superblock fields 3395which require the backups to be touched. 3396 3397Add new function to libext2fs, ext2fs_default_journal_size(), which 3398returns the default journal size. 3399 3400 3401E2fsprogs 1.39 (May 29, 2006) 3402============================= 3403 3404Fix 32-bit cleanliness in e2fsprogs so that we can support filesystems 3405between 2**31 and 2**32 blocks. 3406 3407Change mke2fs to use /etc/mke2fs.conf as a configuration file to 3408configure the filesystem features, blocksize, and inode_ratio for 3409different filesystem types. 3410 3411Mke2fs will now create filesystems hash trees and on-line resizing 3412enabled by default, based on the new /etc/mke2fs.conf file. 3413 3414The e2fsprogs tools (resize2fs, e2fsck, mke2fs) will open the 3415filesystem device node in exclusive mode to prevent accidents by 3416system administrators. In the case of resize2fs and mke2fs, it will 3417only use exclusive mode if the filesystem is not mounted. 3418 3419Fixed a bug in mke2fs which caused it to to fail when creating the 3420resize inode for large filesystems. (Addresses Debian Bug #346580) 3421 3422When allocating space for the RAID filesystems with the stride 3423parameter, mke2fs will now place each portion of the group's inode 3424table right up after the superblock (if present) in order to minimize 3425fragmentation of the freespace. 3426 3427Speed up mke2fs and e2fsck by writing inode and block bitmaps more 3428efficiently by writing the inode and block bitmaps in one pass, thus 3429reducing the number of disk seeks required. 3430 3431Add support for on-line resizing to resize2fs. 3432 3433Fix blkid library so that logic to determine whether or not a device's 3434cached information in /etc/blkid.tab needs to be verified or not 3435doesn't get confused by a system clock which is insane (for example, 3436if the battery is dead on a Macintosh running PPC Linux. (Addresses 3437Red Hat Bug: #182188) 3438 3439The blkid library will now store the UUID of the external journal used 3440by ext3 filesystems, so that in the future, the userspace mount binary 3441can use this to find the location of the external journal and pass 3442this information to the kernel. 3443 3444E2fsck will now consult a configuration file, /etc/e2fsck.conf to 3445control how various options should be handled. See the e2fsck.conf 3446man page for more details. (Addresses Debian Bug: #150295) 3447 3448E2fsck now prints an explanatory message when delaying a filesystem 3449check when the system is running on battery. (Addresses Debian Bug: 3450#350306) 3451 3452E2fsck will detect if the superblock's last mount field or last write 3453field is in the future, and offer to fix if so. (Addresses Debian Bug 3454#327580) These problems will be fixed automatically in preen mode 3455since Debian's boot sequence bogusly doesn't set the time correctly 3456until potentially very late in the bootup process, and this can cause 3457false positives which will cause users' systems to fail to boot. 3458(Addresses Debian Bugs #343662 and #343645) 3459 3460E2fsck now checks to see if the superblock hint for the location of 3461the external journal is incorrect, and if so, offer to update it. 3462(Addresses Debian Bug: #355644) 3463 3464Fix e2fsck from segfaulting on disconnected inodes that contain one or 3465more extended attributes. (Addresses Debian Bug: #316736, #318463) 3466 3467E2fsck will stop and print a warning if the user tries running a 3468read/write badblocks test on a read-only mounted root filesystem. 3469 3470Fix a memory leak in e2fsck's error paths. (Thanks to Michael 3471C. Thompson for pointing these out; they were originally found using 3472Coverity.) 3473 3474When resizing a file containing a filesystem, resize2fs will expand or 3475truncate a file as necessary. (Addresses Debian Bug: #271607) 3476 3477Resize2fs will now automatically determine the RAID stride parameter that 3478had been used to create the filesystem, and use that for newly created 3479block groups. The RAID stride parameter may also be manually specified 3480on the command line using the new -S option to resize2fs. 3481 3482Fix mke2fs so that it correctly creates external journals on 3483big-endian machines (such as a S/390). 3484 3485Fix a bug in the e2p library which could cause dumpe2fs to (rarely) 3486fail to print out the journal or hash seed UUID. (Thanks to Guillaume 3487Chambraud for pointing this out.) 3488 3489Dumpe2fs will now print the size of the journal (if present). 3490 3491Fix debugfs's set_inode_field command so it can properly set the frag, 3492fsize, uid_high, gid_high, and author fields in the inode instead of 3493silently failing, and so that setting the i_size actually sets i_size 3494correctly. 3495 3496Add a new debugfs command, set_current_time, which sets fs->now so 3497that regression test suites can repeatedly modify the filesystem's 3498last_write fields. 3499 3500Fix a bug in debugfs's icheck which would incorrectly report the owner 3501of an extended attribute block. 3502 3503Fix the debugfs commands htree_dump, dx_hash, and list_dir so they print a 3504print a usage message when an illegal option character is given. 3505 3506Fix debugfs's dump_unsued command on filesystems with a 64k blocksize 3507so it won't core dump. (Addresses SourceForge bug #1424311) 3508 3509Fix mklost+found so that it creates a full-sized directory on 3510filesystems with larger block sizes. 3511 3512Fix a file descriptor leak in blkid library. 3513 3514Fix a display bug in "badblocks -sv" so that the done message properly 3515clears the block number at the end of the test. (Addresses Debian Bug 3516#322231) 3517 3518Allow fractional percentages to the -m option in mke2fs and tune2fs 3519(Addresses Debian Bug: #80205) 3520 3521Use fstat/fstat64 in getsize.c if the the target is a regular file, 3522instead of attempting to do a binary search. Fix some fd leaks in 3523error cases. 3524 3525Add support for device mapper library to the blkid library to ensure 3526that the "best" (i.e., leaf) device is probed by the blkid library. 3527 3528Fix the blkid library so that it notices when an ext2 filesystem is 3529upgraded to ext3. 3530 3531Improve the blkid's library VFAT/FAT detection; it now understands 3532labels stored in the root directory, and is more paranoid about 3533checking the FAT superblock values. 3534 3535Fixed a fd leak in the uuid library which was causing problems for the 3536LVM tools. (Addresses Debian Bug: #345832) 3537 3538Add support for the reiser4 and software suspend partitions to the 3539blkid library. Also add support for extract the label from iso9660 3540filesystems. 3541 3542Fix a compile_et bug which miscount the number of error messages if 3543continuations are used in the .et file. 3544 3545Add extra sanity checks to protect users from unusual cirucmstances 3546where /etc/mtab may not be sane, by checking to see if the device is 3547reported busy (works on Linux 2.6) kernels. (Addresses Debian Bug 3548#319002) 3549 3550Updated French, Dutch, Polish, and Swedish translations. (Addresses Debian 3551Bug: #343149, #341911, #300871, #316604, #316782, #330789) 3552 3553Fix use-after-free bug in e2fsck when finishing up the use of the 3554e2fsck context structure. 3555 3556Fixed spelling mistakes, typos, and otherwise clarified man pages and 3557documentation. (Addresses Debian Bugs: #329859, #322188, #316811, 3558#312515, #351268, #357951, #347295, #316040, #368392, #368393, #368394, 3559#368179) 3560 3561Fixed various Debian packaging issues --- see debian/changelog for 3562details. (Addresses Debian Bugs #317862, #320389, #290429, #310950, 3563#310428, #330737, #330736, #329074, #356293, #360046, #366017, #364516, 3564#362544, #362970) 3565 3566 3567Programmer's notes: 3568------------------- 3569 3570Update config.guess and config.sub to latest version (2006-02-23) from 3571FSF. 3572 3573Fix asm_types.h type conflicts on AMD 64 platforms. (Addresses Debian 3574Bugs: #360661, #360317) 3575 3576Fixed the Makefile so that they work correctly on newer versions of 3577GNU make (i.e., 3.81). 3578 3579Add valgrind support to the regression test suites, and eliminate 3580false positives from valgrind. 3581 3582Add a regression test suite for the blkid library. 3583 3584Fix a fencepost error in resize2fs caught by valgrind. 3585 3586Fix compiler warnings about missing memcpy prototypes. 3587 3588We no longer have the sparc assembly code in the header file any more, 3589so we shouldn't set _EXT2_HAVE_HAS_BITOPS_ for the sparc. This would 3590break compiles on the sparc architectures when using gcc. 3591 3592In the libext2fs library, add the new field fs->now which if non-zero 3593is used instead of the system time when setting various filesystem 3594fields (last modified time, last write time, etc.) 3595 3596Fix gcc 4.01 complaints by adding a missing #include <string.h> to 3597ext2fs.h which is needed since the inline functions use memcpy(). 3598(Addresses Sourceforge Bug #1251062) 3599 3600Use BUILD_CFLAGS and BUILD_LDFLAGS instead of CFLAGS and LDFLAGS in 3601the build system when building files in the util directory which are 3602needed during the build process. This avoids potential problems when 3603cross-compiling and some of the options specified in CFLAGS or LDFLAGS 3604are not recognized as valid by the host compiler. (Addresses 3605Sourceforge Bug #1261547) 3606 3607Clean up the blkid library by making the superblock and generic i/o 3608functions to be more generic. Clean up interface to the probe 3609function, and fix memory leak. Finallly, remove an unneeded reference 3610to probe.h in the lib/blkid/resolve.c 3611 3612Add an ext2fs_read_bb_FILE regression test to confirm proper detection 3613of invalid block #'s. 3614 3615The x86 asm constraints for ext2fs_{set/clear}_bit have been fixed to 3616indicate that the the function read/writes the memory location. 3617 3618Fix various gcc -Wall complaints. 3619 3620Add a dependency to make sure that the subdirectories are created 3621before creating all of the object files, in order to address parallel 3622build problem in the library Makefiles. (Addresses Sourceforge Bug: 3623#1261553) 3624 3625Add $(LDFLAGS) to the command line argument when generating an ELF or 3626Solaris shared library, to allow cross-compile and other builds that 3627might need to specify -L paths to needed libraries. (Addresses 3628Sourceforge Bug #1261549) 3629 3630Add a new feature, EXT2_FEATURE_COMPAT_LAZY_BG, which is initially 3631intended for testing purposes. It allows an ext2/ext3 developer to 3632create very large filesystems using sparse files where most of the 3633block groups are not initialized and so do not require much disk 3634space. Eventually it could be used as a way of speeding up mke2fs and 3635e2fsck for large filesystem, but that would be best done by adding an 3636RO_COMPAT extension to the filesystem to allow the inode table to be 3637lazily initialized on a per-block basis, instead of being entirely 3638initialized or entirely unused on a per-blockgroup basis. 3639 3640Fix backwards compatibility so e2fsprogs will better compile on Linux 36412.0.35 systems. 3642 3643Make test scripts more robust against locale-related environment variables 3644 3645Fix type warning problem with sizeof() in ext2fs_open2(). 3646 3647Fix type warning problem with time_t in debugfs. 3648 3649 3650E2fsprogs 1.38 (June 30, 2005) 3651============================== 3652 3653Fix blkid's test programs (built with "make check") compile correctly 3654even without "configure --enable-blkid-debug". 3655 3656Fix ia64 core dump bug caused by e2fsprogs running afoul of C99 strict 3657type aliasing rules on newer gcc compilers. (Addresses Red Hat 3658Bugzilla ##161183.) 3659 3660Fix com_err library to make it more compatible with recent changes 3661made to the com_err library in MIT Kerberos V5 version 1.4. 3662(Addresses Sourcefroge Bug #1150146) 3663 3664General cleanup of messages printed by e2fsprogs programs for grammar, 3665consistency, and to make life easier for translators. Fixed a few 3666strings containing English that had not been marked as needing 3667translations. Removed strings that do not need to be translated, to 3668make life easier for translators. 3669 3670Mke2fs and badblocks will take advantage of a feature in Linux 2.6 to 3671test to see if a device appears to be in use instead of just relying 3672on /proc/mounts and /etc/mtab. (Addresses Debian Bug #308594). 3673 3674Fix portability problem in the filefrag program affecting platforms 3675where the size of an integer is smaller than the size of a long. 3676(Addresses Debian Bug #309655) 3677 3678Mke2fs will now use a larger journal by default for filesystems 3679greater than 4GB. (128 MB instead of 32MB). 3680 3681Mke2fs will refuse to create filesystems greater than 2**31-1 blocks, 3682unless forced. This is to avoid signed vs. unsigned kernel bugs in 3683block numbers that still need to be fixed. 3684 3685The blkid program has a new option which will more efficiently search 3686for device when it is known (or expected) that only one matching 3687device will be found in the system, such as when doing a lookup by 3688UUID. 3689 3690Debian's e2fsprogs-specific initrd fragment will avoid including 3691unnecessary libraries into the initrd ramdisk by unsetting LD_PRELOAD 3692and LD_LIBRARY_PATH, and filtering out libraries found in 3693/etc/ld.so.preload. (Addresses Debian Bug: #304003) 3694 3695Fixed a potential portability issue in the blkid programs for 3696architectures where the char type is unsigned. (Addresses Sourceforge 3697Bug: #1180585) 3698 3699Fix a bug in filefrag so that it doesn't falsely count an extra 3700discontinuity when the first block found is an indirect block. 3701(Addresses Debian Bug #307607). 3702 3703Fix blkid's recognition of cramfs filesystems, and enhance it to be 3704able to handle cramfs labels. 3705 3706Fix debugfs's stat command to not core dump when a filesystem is not 3707open. 3708 3709Fix e2fsck's handling of error conditions caused by the resize inode 3710claiming blocks that are also used by other inodes, a filesystem 3711corruption which was commonly caused by a bug in Fedora Core 3's 3712resize2fs program. 3713 3714Fixed bug in filefrag which caused it to fail on non-ext2/3 3715filesystems. (Addresses Debian Bug: #303509) 3716 3717If the superblock last mount time indicates that the system clock may 3718not be accurate, then e2fsck will omit checking inodes' deletion time 3719field for indications of a potential corrupted orphaned inode list. 3720(Previously e2fsck only ommited these LOW_DTIME checks when the 3721superblock's last write time looked insane.) 3722 3723Fixed a IA64 core dump bug in the e2p library which affected dumpe2fs. 3724(Addresses Debian bug #302200) 3725 3726Make the blkid library more paranoid about being run from setgid 3727programs, and to use __secure_getenv() from libc if it is available. 3728 3729Fixed spelling mistakes, typos, and otherwise clarified man pages. 3730(Addresses Debian Bugs: #304591, #304592, #304594, #304597, #304593 3731and Sourceforge Bug: #1189803) 3732 3733Updated and fixed translations. 3734 3735Fixed various Debian packaging issues --- see debian/changelog for 3736details. 3737 3738Programmer's notes: 3739------------------- 3740 3741Ext2fs_set_bit(), ext2fs_clear_bit(), and ext2fs_test_bit( have been 3742changed to take an unsigned int for the bit number. Negative bit 3743numbers were never allowed (and didn't make any sense), so this should 3744be a safe change. This is needed to allow safe use of block numbers 3745greater than or equal to 2**31. 3746 3747The compile_et program will avoid recreating generated foo_err.c and 3748foo_err.h files if no changes are necessary. The compile_et program 3749will also atomically replace these files to avoid a potential parallel 3750build race problem on SMP systems. (Addresses Sourceforge Bug: 3751#1157933) 3752 3753Added a new function to the blkid library, blkid_probe_all_new(), 3754which only probes newly added disk devices, and change 3755blkid_find_dev_with_tag() to use this function so that when a 3756requested tag is not found, devices that were previously not checked 3757are searched before searching all devices in the system. 3758 3759Added new functions to the blkid library, blkid_dev_set_search() and 3760blkid_dev_has_tag(). 3761 3762E2fsck's problem strings can now use @m and @n as abbrevations for 3763"multiply-claimed" and "invalid", respectively. 3764 3765The e2fsprog.pot file now has an explanation of how the @-expansion 3766and %-expansion works, and strings in e2fsck/problem.c which contain @ 3767characters now have comments in e2fsprogs.pot with the @-expansion to 3768make life easier for translators. 3769 3770Fixed missing return values in the ext2fs library which could cause it 3771to return random garbage in certain error conditions. 3772 3773Allow the current time to be overriden via the E2FSCK_TIME environment 3774variable for use in regression tests. 3775 3776The test scrpit driver program now exits with a non-zero status if 3777there any of its test that it ran failed. 3778 3779Fixed problems with parabuilds on SMP systems. (Addresses Sourceforge 3780Bug: #1157933) 3781 3782Fixed "make check" so that it compiles correctly even when e2fsprogs' 3783header files have not be installed in the system include directories. 3784(Addresses Sourceforge Bug: #1180572) 3785 3786Fixed gcc -Wall nits. 3787 3788 3789E2fsprogs 1.37 (March 21, 2005) 3790=============================== 3791 3792Add support for checking the validity of Extended Attributes stored in 3793inodes to e2fsck. 3794 3795Add support for dumping the contents of large inodes to debugfs, 3796including the extended attributes stored in inodes. 3797 3798Fix mke2fs, e2fsck, debugfs, and the ext2fs_mkdir function so that 3799when we create a new inode we make sure that the extra information in 3800the inode (any extra fields in a large inode and any ea-in-inode 3801information) is initialized correctly. This can take place when 3802mke2fs creates the root and lost+found directory, when e2fsck creates 3803a new root inode or a new lost+found directory, and when the user uses 3804the debugfs write, mknod, or mkdir commands. Otherwise, the newly 3805create inode could inherit garbage (or old EA information) from a 3806previously deleted inode. 3807 3808Fixed a bug in e2fsck so it would notice if a file with an extended 3809attribute block was exactly 2**32 blocks, such that i_blocks wrapped 3810to zero. 3811 3812Added support to filefrag to detect files which are using the new 3813experimental file extents format, and use the non-ext2 algorithm in 3814that case. Fixed a bug to avoid reporting a false discontinuity if 3815there is one or more unallocated blocks at the beginning of a file. 3816 3817Duplicated a check for noticing whether or not the number of blocks 3818(given a certain blocksize) is greater than 2**32 when the 3819BLKGETSIZE64 ioctl is not available to ext2fs_get_device_size(). This 3820allows mke2fs to automatically use a larger blocksize when creating a 3821filesystem on a very large device when run on systems that do not 3822support BLKGETSIZE64. 3823 3824Fix the I18N build which was broken in e2fsprogs 1.36 because the 3825build system had been switched to treat the .gmo files as shipped 3826files (for backwards compatibility with systems that have older GNU 3827I18N tools installed), but the gen_tarball.in script was still 3828removing the .gmo files from the official source distribution. 3829 3830Fixed various Debian packaging issues --- see debian/changelog for 3831details. (Addresses Debian Bugs ##296769, #299341) 3832 3833Programmer's notes: 3834------------------- 3835 3836Added new functions to the e2p library which convert between a string 3837and os_type: e2p_os2string() and e2p_string2os(), and used them to 3838make the generated binaries more compact. 3839 3840Fixed a compile-time error on Darwin systems. 3841 3842Cleaned up the lib/ext2fs Makefile slightly. 3843 3844 3845E2fsprogs 1.36 (February 4, 2005) 3846================================= 3847 3848All of the patches that were applied to Fedore Core 3's 3849e2fsprogs-1.35-11.2 have been integrated, although sometimes with a 3850lot of bug fixes first. Users of Fedora Core 3 are strongly 3851encouraged to upgrade to e2fsprogs 1.36 as soon as possible. 3852 3853Add support for filesystem with the online resizing via resize inode 3854feature. Fixed numerous bugs from the Fedora patches. The Fedora 3855patches also didn't bother to do any consistency checking on the 3856resize inode, or add any tests to the regression test suite. The "-R 3857resize=4g" option to mke2fs was a no-op in the Fedora patches, despite 3858being listed in mke2fs's usage message. All of these shortcomings 3859have been corrected. 3860 3861E2fsck can also also fix filesystems trashed by Fedora's resize2fs 3862program. In order to do this, the user must run the commands: 3863 3864 debugfs -w /dev/hdXXX -R "features ^resize_inode" 3865 e2fsck -f /dev/hdXXX 3866 3867Optionally, the ext2prepare command can be used to re-enable online 3868resizing after the filesystem has been fixed. 3869 3870The fsck program will now accept an optional filedescriptor argument 3871to the -C option. (The Fedora version of this patch would sometimes 3872cause fsck to ignore a parameter on fsck's command line in some rare 3873cases, sigh.) 3874 3875Make sure e2fsprogs doesn't write garbage into the reserved portion of 3876large inodes. 3877 3878Make sure resize2fs releases the blocks belonging to the old inode 3879table blocks when moving the inode table. (Addresses Debian Bug: 3880#290894) 3881 3882Skip the r_resize_inode test if resize2fs is not compiled (due to 3883configure --disable-resizer) 3884 3885E2fsck now checks the summary filesystem accounting information, and 3886if any of the information is obviously wrong, it will force a full 3887filesystem check. (Addresses Debian Bug #291571) 3888 3889Fix e2fsck to not complain when the resize_inode feature is enabled, 3890s_reserved_gdt_blocks is zero, and there is no DIND block allocated in 3891the resize inode. 3892 3893Fix e2fsck to note delete symlinks that contain an extended attribute 3894after the ext_attr feature flag has been cleared. (Addresses Red Hat 3895Bugzilla #146284). 3896 3897Add new utility program, copy_sparse.c, which is very useful 3898for dealing with large sparse files (such as e2image files). 3899 3900Add support for jnl_blocks[] for debugfs's set_super_value. 3901 3902Fix filefrag so that it works correctly with sparse files. 3903 3904Filefrag -v will print first and last blocks. 3905 3906Add interpretation of OS Creator values for FreeBSD and Lites in mke2fs 3907and dumpe2fs. 3908 3909Add mke2fs support so that it can support filesystems larger than 4TB 3910automatically, by retrying with a 4k blocksize if the device size is 3911too big to be expressed using a 1k blocksize. (Addresses Sourceforge 3912bug #1106631) 3913 3914Change blkid to test for NTFS first because Windows sometimes doesn't 3915clear enough of the parition to confuse the probing routines into 3916thinking the old filesystem type is still valid. (Addresses Debian 3917Bug #291990) 3918 3919Add support for swap partition label and uuid's in the blkid library. 3920 3921Add support to the blkid library to recognize Oracle ASM volumes. 3922 3923Make blkid -t display all devices that match the specified criteria, 3924not just the first one, and work more consistently when the blkid 3925cache file is not available or set to /dev/null. (Addresses Debian 3926Bug #290530 and #292425) 3927 3928Badblocks will now correctly display block numbers greater than 3929999,999,999 in its progress display. 3930 3931The tune2fs program will not allow the user from setting a ridiculous 3932number of reserved blocks which would cause e2fsck to assume the 3933superblock was corrupt. E2fsck's standards for what is a ridiculous 3934number of reserved block has also been relaxed to 50% of the blocks in 3935the filesystem. 3936 3937The blkid library will return vfat in preference to msdos, and ext3 in 3938preference to ext2 (if the journalling flag is set) so that mount will 3939do the right thing. (Addresses Debian bug #287455) 3940 3941Mke2fs will now use the -E option for extended options; the old -R 3942(raid options) option is still accepted for backwards compatibility. 3943Fix a double-free problem in resize2fs. (Red Hat Bugzilla #132707) 3944 3945Mke2fs will now accept a size in megabytes, gigabytes, and other units 3946(via "32m" or "4g" on the command line) if the user finds this more 3947convenient than specifying a block count. 3948 3949Fix an obscure, hard-to find bug in "e2fsck -S" caused by an inode 3950cache conherency problem. 3951 3952Debugfs now supports a new command, set_inode_field, which allows a 3953user to manually set a specific inode field more conveniently, as well 3954as set entries in the indirect block map. 3955 3956Debugfs's set_super_value command has been enhanced so that the user 3957can set most superblock fields, including the date/time fields and 3958some of the more newsly added superblock fields. 3959 3960E2fsprogs programs now accept an offset to be passed to the file 3961specifiers, via the syntax: "/tmp/test.img?offset=1024". 3962 3963E2fsprogs programs will now accept blocksizes up to 65536; kernel 3964support on the x86 doesn't exist for now, but it can be useful on 3965other architectures with page sizes greater than 4k. There are 2.6 3966kernel patches out there which enable this, but they are of this 3967writing still experimental. 3968 3969The e2image command now takes the -s option which will scramble 3970directory entries for raw image files. 3971 3972Fix a file descriptor leak in the filefrag program. 3973 3974Make sure e2fsck doesn't crash when /proc/acpi/ac_adapter is not 3975present. 3976 3977Fix bug in debugfs where kill_file would lead to errors when deleting 3978devices and symlinks. (Sourceforge Bugs #954741 and #957244) 3979 3980Fix bug in the blkid library when detecting the ocfs1 filesystem 3981 3982Remove obsolete EVMS 1.x and a.out DLL support. 3983 3984E2fsck will attempt to recover from a journal containing illegal blocks. 3985 3986Fixed two potential ordering constraint problems in e2fsck which might 3987cause the filesystem to be corrupted if e2fsck is interrupted during a 3988(extremely narrow) race window. Thanks to Junfeng Yang from the 3989Stanford Metacompilation group for pointing this out. 3990 3991Fixed bug in e2fsck where it would not accurately detect whether or 3992not the system is running on adaptor if the ACPI device representing 3993the AC adapter didn't correspond to the what was used on IBM 3994Thinkpads. 3995 3996Change e2fsck to accept directories greater than 32MB. 3997 3998Fix e2fsck so that a checkinterval of zero disables a time-based check 3999of the filesystem. 4000 4001Debugfs will check the DEBUGFS_PAGER enviroment variable in preference 4002to the PAGER environment variable. (Addresses Debian Bug #239547) 4003 4004Tune2fs will not mark rewrite the superblock if the feature bitmasks 4005are not modified. 4006 4007The debugfs program will set the filetype information when creating a 4008link. 4009 4010Add debugfs -d option to use a separate source of data blocks when 4011reading from an e2image file. 4012 4013Add e2image -I option which allows the e2image metadata to be 4014installed into a filesystem. 4015 4016Fixed bug in the badblocks program which caused "done" to always 4017appear in english even when a translation was available. (Addresses 4018Debian Bug #252836) 4019 4020The blkid program has a new option -o which controls the output format 4021of the blkid program; this is makes blkid more convenient to use in 4022shell scripts. 4023 4024Fix a minor bug in uuid library, which was not using the full 14 bits 4025of clock sequence when generating UUID's. 4026 4027Fix a Y8.8888K problem in the uuid library. 4028 4029Logsave now creates a new session id for itself to avoid getting 4030killed by init whan transitioning between init levels. 4031 4032Change the licensing of the UUID library to be the 3-clause BSD-style 4033license; this allows Apple to use the uuid library in Darwin. 4034 4035Add ocfs and ocfs2 probe support into the blkid library. 4036 4037Fix a memory and file descriptor leak in the blkid library. 4038 4039The blkid library will revalidate the device if the system time is 4040earlier than last verification time of the device, since that 4041indicates that the system time is probably nottrustworthy. 4042 4043The blkid library will override the default location of the blkid.tab 4044file by the BLKID_FILE environment variable, if it is available. 4045 4046Change the getsize functions to use the BLKGETSIZE64 ioctl on Linux 2.6. 4047 4048Add various portability fixes for lame new versions of glibc, Darwin 4049and GNU/KFreeBSD, as well as removing XSI:ism's. (Addresses Debian 4050Bugs #239934, #264630, #269044, #255589, #289133) 4051 4052Add support for Windows 9x/NT under Cygwin. 4053 4054Updated and clarified various man pages. (Addresses Debian Bugs #236383, 4055 #241940, #238741, #242995, #256669, #268148, #256760, #273679) 4056 4057Updated and fixed translations. (Addresses Debian bugs #244105, #262836) 4058 4059Update the rpm spec files so that it works better with Fedora core 2 4060and RH9. 4061 4062Fixed various Debian packaging issues (see debian/changelog). In 4063particular, fixed the Debian initrd scripts. (#241183, #248050, 4064#253595, #247775) 4065 4066 4067Programmer's notes: 4068------------------- 4069 4070Fixed various gcc -Wall warnings. 4071 4072The uuid library now has new functions uuid_unparse_upper() and 4073uuid_unparse_lower() which forces the case of the hex digits to be 4074upper case, or lower case. 4075 4076The build process has been speeded up by enhancing the subst program 4077to update the modtime on the generated files even when the generated 4078file hasn't changed. 4079 4080The uuid library now uses C99 stdint.h types instead of custom types. 4081 4082Updated config.guess and config.sub with newer versions from the FSF. 4083 4084Removed out of date .cvsignore files from the source distribution. 4085 4086The ext2fs_unlink() function will return an error if both the name and 4087inode number are unspecified, to avoid doing something surprising 4088(such as unconditionally deleting the first directory entry). 4089Directory entries are now deleted by coalescing them with the previous 4090directory entry if possible, to avoid directory fragmentation. This 4091is not an issue with the e2fsprogs suite, but may be a problem for 4092some of the users of libext2fs, such as e2tools. 4093 4094Add support for version numbers of the form "1.36-rc1". 4095 4096Fix build of mke2fs.static. 4097 4098Add basic ext2fs library support for large (EA in inode) inodes. 4099 4100The test_io mechanism can now abort after n reads or writes to a 4101particular block. The block is specified by TEST_IO_BLOCK environment 4102variable, and the read/write count by the TEST_IO_READ_ABORT and 4103TEST_IO_WRITE_ABORT environment variables. The block data is now only 4104dumped if the 0x10 bit is set in TEST_IO_FLAGS. 4105 4106UUID_DEFINE() in the uuid library now creates a static variable, with 4107__attribute__ ((unused)) if we are using GCC, so that UUID_DEFINE can 4108be used in header files. 4109 4110Add support for the install-strip and install-shlibs-strip targets, as 4111suggested by the GNU coding guielines. "make install" no longer 4112strips the binaries which are installed. 4113 4114Remove support for the --enable-old-bitops configure option which was 4115only for very old sparc systems. 4116 4117Remove support for --enable-clear-htree; this was only needed during 4118the early development of the htree patch. 4119 4120Use Linux-kernel-style makefile output so it is easier to see compiler 4121warnings. 4122 4123Update gettext files to version 0.14.1. 4124 4125Update to use autoconf 2.5x. 4126 4127Improved support for compiling e2fsprogs under dietlibc. 4128 4129Make e2fsprogs portable to Solaris and FreeBSD systems. 4130 4131Add blkid_verify(), blkid_get_library_version(), and 4132blkid_parse_version_string() functions to the blkid library. 4133 4134Add pkg-config files for e2fsprogs's libraries. 4135 4136Fix "make uninstall" to so that it removes everything that is installed. 4137 4138Add a configure --enable-maintainer-mode option which enables the 4139makefile rules to rebuild the configure script from configure.in, and 4140to reubuild the .gmo files in po directory. 4141 4142Drop the sparc assembly bitwise operations; it's less efficient 4143than the GCC 3.4 compile code and triggers compiler warnings on 4144sparc64. Thanks to Matthias Andree for his analysis and suggestions. 4145(Addresses Debian Bug #232326) 4146 4147 4148E2fsprogs 1.35 (February 28, 2004) 4149================================== 4150 4151E2fsck has a new -k option, which in conjunction with the -c options, 4152preserves the existing badblocks list. 4153 4154Cleaned up e2fsck's preen-mode messages during the passes 1b, 1c, and 1d. 4155 4156E2fsprogs will now deal correctly with symlinks that contain 4157extended attribute information, which can be created using SE Linux. 4158(Addresses Debian Bug #232328) 4159 4160Remove a double longjump into an invalid stack frame bug in e2fsck. 4161(This was during an abort sequence, which normally worked on Linux and 4162caused a core dump on other operating systems.) 4163 4164Fix NLS bug in e2fsck, by avoiding trying to expand an empty string 4165(the NLS library will replace "" with the .po header information). 4166 4167Fix a bug in mke2fs which caused -T largefile or -T largefile4 to core 4168dump due to a division by zero error. (Addresses Debian bug #207082) 4169 4170Fixed a bug in e2fsck which caused it to incorrectly fix a filesystem 4171when reconnecting a directory requires creating a lost+found 4172directory. (Addresses Debian bug #219640). 4173 4174Fixed a bug where e2fsck would bomb out if a journal needed to be 4175replayed when using an alternate superblock. 4176 4177E2fsck will give an extra grace period before actually forcing a check 4178if the laptop is running on battery. The next time fsck runs while 4179the system is on the AC mains, or after the grace period is exceeded, 4180the filesystem will be checked. (Addresses Debian bug #205177) 4181 4182E2fsck will inform the user when there are 5 or fewer mounts before a 4183filesystem check will be forced. (Addresses Debian bug #157194) 4184 4185Fix e2fsck's handling of corrupted indirect blocks in the bad block. 4186We now correctly handle the case where there is an overlap between a 4187block group descriptor or a superblock and a bad block indirect block. 4188In the case where the indirect block is corrupted, we now suggest 4189"e2fsck -c". 4190 4191Fix byte swap bugs in e2fsck that caused the journal backup location 4192in the superblock and symlinks created by SE Linux to be cleared 4193by e2fsck on big-endian machines. (Addresses Debian bug #228723) 4194 4195E2fsck -c now replaces the current list of bad blocks with the ones 4196found by badblocks. 4197 4198Fix bugs in e2fsck and tune2fs which could cause a core dump if a 4199non-existent LABEL or UUID specifier is to e2fsck or tune2fs. 4200 4201Fix a potential bug in e2fsck which could cause it to core dump when 4202trying to print the location of the backup superblock. 4203 4204Protect against a potential core dump in e2fsck when printing a 4205message about backup superblocks. 4206 4207Add support for backing up the journal inode location in the 4208superblock. E2fsck will automatically save the journal information in 4209the superblock if it is not there already, and will use it if the 4210journal inode appears to be corrupted. ext2fs_add_journal_inode() 4211will also save the backup information, so that new filesystems created 4212by mke2fs and filesystems that have journals added via tune2fs will 4213also have journal location written to the superblock as well. 4214Debugfs's logdump command has been enhanced so that it can use the 4215journal information in the superblock. 4216 4217E2fsck will now update all superblocks when moving the journal inode. 4218 4219Shrink the size of the e2fsck executable by moving some initialized 4220variables to the BSS segment. 4221 4222E2fsck will avoid printing the ^A and ^B characters which bracket the 4223progress bar when stdout and stdin are a tty device instead of a pipe 4224to another program. (Addresses Debian bug #204137) 4225 4226Debugfs's mkdir command will automatically expand the directory if 4227necessary. (Addresses Debian Bug: #217892) 4228 4229Fixed a bug in debugfs so that copying a file from /dev/null uses the 4230correct mode bits. (Addresses Debian Bug: #217456) 4231 4232If the environment variables DEBUFS_PAGER and PAGER are not set, 4233debugfs now searches for the appropriate pager to use, beginning with 4234/usr/bin/pager, and then falling back to 'more' and 'less'. 4235(Addresses Debian bug #221977) 4236 4237Debugfs will now support 2.6 device numbers where the major or minor 4238number may be larger than 255. (Addresses Sourceforge bug #865289) 4239 4240Fix debugging printf in resize2fs. (Addresses Debian Bug #271605) 4241 4242Chattr now stops processing options when it sees '--'. (Addresses 4243Debian bug #225188) 4244 4245Fix regression tests so they work correctly when e2fsprogs is compiled 4246with configure --disable-htree. 4247 4248Fix bug in uuid library when there is no network card and the library 4249is generating a time-based uuid. The random MAC address was not 4250correctly generated to be a multicast address. 4251 4252Add compile_et extensions from Heimdall that were missed the first time 4253around. 4254 4255Fix bug in badblocks when using O_DIRECT; we need to make sure that 4256we're reading from an offset which is page aligned. For read-only and 4257read-write tests, we try to recover after an error so that we can 4258continue reading on page-aligned boundaries. (Addresses Debian Bug 4259#203713) 4260 4261Badblocks now checks 64 blocks at a time instead of 16. (Addresses 4262Debian bug #232240) 4263 4264Updated and clarified various man pages. (Addresses Debian Bug 4265#206845, #222606, #214920, #232406) 4266 4267Updated and fixed translations. (Addresses Debian bugs #200086, #214633) 4268 4269Fixed various Debian packaging issues (see debian/changelog). 4270 4271Programmer's notes: 4272------------------- 4273 4274Fixed a build problem so that e2fsprogs would compile with the 4275--enable-profile option to configure selected. (Addresses Sourceforge 4276bug #811408) 4277 4278Fixed C++ problems with the ext2fs.h header. (Addresses Red Hat 4279Bugzilla Bug #112448) 4280 4281Centralize code which calculates the location of the superblock 4282and block group descriptors so that it is in a single library routine. 4283 4284Added two new functions, ext2fs_file_open2() and 4285ext2fs_inode_io_intern2() which take a pointer to an inode structure. 4286 4287Fix compile_et to output the correct prototype for 4288initialize_xxx_err_table_r() in the header file. (Addresses Debian 4289bug #204332) 4290 4291In the lib/et makefile, make sure com_err.info is deleted on "make clean". 4292 4293Fix 64-bit warnings in e2fsprogs pass1b by using inttypes.h if 4294present. This is for when we try stuffing an int into void * pointer. 4295 4296Fix type-punning which can cause gcc 3.x to miscompile code by getting 4297confused about pointer aliasing. ext2fs_getmem(), ext2fs_free_mem(), 4298and ext2fs_resize_mem() all now take a 'void *' instead of a 'void 4299**'. The EVMS code uses an ugly union approach since we don't want to 4300modify the EVMS interfaces. 4301 4302Make sure all Makefiles use $(MAKE) rather than hardcoded "make", to 4303aid build process on systems can use invoke GNU make as "gmake". 4304 4305Added regression testing for mke2fs. 4306 4307Fixed gcc -Wall nitpicks. 4308 4309Fixed various compiler warnings. 4310 4311Add portability fixes for FreeBSD and for using fsctl under Darwin to 4312support ext2 ioctl's. 4313 4314 4315E2fsprogs 1.34 (July 25, 2003) 4316=============================== 4317 4318Fixed a bug introduced in E2fsprogs 1.30 which caused fsck to spin in 4319a tight loop while waiting for a child fsck to exit in some cases. 4320This burns CPU times which slows down the low-level filesystem check. 4321 4322Added code to mke2fs to assure that the default block size for a 4323filesystem is at least as big as the sector size of the device, if it 4324can be determined. 4325 4326Changed mke2fs and resize2fs to round the default size of a filesystem 4327to be an even multiple of the VM pagesize in order to avoid a Linux 4328kernel bug introduced when the storage of the buffer cache was moved 4329into the page cache. 4330 4331Mke2fs will warn the user when creating a filesystem with journaling 4332and a blocksize greater than 4096. (Addresses Debian bug #193773) 4333 4334Fixed a bug in resize2fs which caused it to fail on filesystems with a 4335non-empty bad block list. Resize2fs now discards any blocks on the 4336badblock list which are no longer part of the filesystem as the result 4337of a filesystem shrink. (Note: this means that shrinking and then 4338enlarging a filesystem is no longer a reversible operation; 4339information about bad blocks in the part of the filesystem which is to 4340be chopped off will be lost.) 4341 4342Changed resize2fs so the user can use prefixes to specify the units of 4343the new filesystem size (sectors, kilobytes, megabytes, or gigabytes), 4344and to make the error and informational messages explicitly display 4345the blocksize used by the filesystem, in order to avoid confusion. 4346(Addresses Debian bug: #189814) 4347 4348Added a new debugfs command, dump_unused, which dumps the contents of 4349all unused blocks to stdout. (Useful as an emergency try-to-find 4350deleted data command.) 4351 4352Added a new debugfs command, imap, which prints the location of a 4353specified inode in the inode table. 4354 4355Fixed a bug in the badblocks program which caused it to use one bit of 4356randomness in its non-destructive read/write test, instead of using a 4357full 8 bits of randomness. 4358 4359Added a new option (-t) to badblocks, which allows the user to control 4360the test pattern(s) used when checking a disk. 4361 4362The blkid probe function now more correctly detects UDF filesystems. 4363 4364Fixed a bug in the blkid library which caused it to not update its 4365cache if a filesystem changes from having a label to not having a 4366label. 4367 4368Fixed a bug in the blkid library wihch could avoid an infinite loop 4369in blkid_find_dev_with_tag() if /proc is not mounted and there the 4370/etc/blkid.tab file has not yet been created. 4371 4372Fixed the badblocks program so that the destructive read/write test 4373honors the -c option, and to use O_DIRECT when possible to avoid 4374thrashing the system block buffer cache. 4375 4376Fixed various NLS issues. 4377 - Added Czech and Swedish translations 4378 - Removed testing NYC translation 4379 - Fixed NLS support for message abbrevations in e2fsck 4380 - Remove de-utf.po, since we shouldn't have two versions using different 4381 charset encodings. 4382 - Used ngettext() (abbreivated with the macro P_(str1, str2, n)) to 4383 simplify the statistics reporting in e2fsck. 4384 4385Changed configure.in so that its defaults for *BSD systems no longer 4386build an fsck wrapper, and not to install in /usr/local by default. 4387 4388Fixed some minor spelling errors/typo's in e2fsck and the configure 4389script. 4390 4391Fixed various Debian packaging issues (see debian/changelog). 4392 4393Updated and clarified man pages. (Addresses Debian Bug #195616) 4394 4395Programmer's notes: 4396------------------- 4397 4398Fix gcc -Wall nitpicks. 4399 4400Updated gettext implementation used by e2fsprogs to 0.11.5, and enable 4401NLS support by default. (Added partial workaround for gettext/Darwin 4402incompatibility problems.) 4403 4404Added full MIT KRB5 and Himdall compaibility support to the com_err 4405library and the compile_et program. (Addresses Debian bug #191900) 4406 4407Added the blkid_known_fstype() function to the blkid library, which 4408returns true if it is passed a filesystem type which is recognized by 4409the blkid probing functions. 4410 4411Improved the documentation for the blkid library. 4412 4413Added the ext2fs_get_device_sectsize() function the the ext2fs library, which 4414returns the hardware sector size of a device, if it is available. 4415 4416Added a dependency in the blkid library's .so file to the uuid 4417library, since the former uses the latter. (Addresses Debian bug 4418#194094) 4419 4420Added --with-diet-libc and --disable-evms to the configure script. 4421 4422Fixed a minor memory leak in the badblocks program. 4423 4424Fixed a portability problem in tune2fs --- not all systems have strptime(). 4425 4426Fixed a portability problem in debugfs with the use of getopt() more 4427than once. Old-style BSD, new-style BSD, and Linux C libraries all do 4428things differently. 4429 4430Add support Windows support to ext2fs_get_device_size(). 4431 4432Added (normally disabled) debugging code to the Unix I/O manager which 4433causes it to disable all userspace caching if the NO_IO_CACHE is 4434defined. 4435 4436Changed the test I/O manager so it can always be linked into e2fsck, 4437mke2fs, and tune2fs if enabled via --enable-test-io-debug to the 4438configure script. The test I/O manager will only print any debugging 4439information if the TEST_IO_FLAGS or TEST_IO_BLOCK environment 4440variables are set, which specifies which I/O operations are logged and 4441a block number to watch, respectively. The log messages are sent to 4442stderr by default, unless a filename is specified via the 4443TEST_IO_LOGFILE environment variable. 4444 4445 4446E2fsprogs 1.33 (April 21, 2003) 4447=============================== 4448 4449Added a new utility program, logsave, which captures the output of a 4450command in a log file, even if the containing directory hasn't been 4451mounted yet (in which case the it saves the output in memory until it 4452can write out the logfile). This is useful for capturing the 4453output of fsck during the boot sequence. 4454 4455Fixed some portability problems that were causing problems under 4456the Cygwin32 environment. 4457 4458Mke2fs now interprets a negative number to the -b option as a minimum 4459block size. 4460 4461Fixed a bug in mke2fs which was incorrectly checking the argument to 4462the -g option if the default block size was used. (Addresses Debian 4463bug #188319) 4464 4465Fsck now explicitly ignores tmpfs and devpts, and it will complain if 4466it can not find filesystem checkers for jfs, reseirfs, and xfs. 4467 4468E2fsck now updates the global free block and inode counters from the 4469block group specific counters quietly. This is needed for an 4470experimental patch which eliminates locking the entire filesystem when 4471allocating blocks or inodes; if the filesystem is not unmounted 4472cleanly, the global counts may not be accurate. 4473 4474Imported bug fixes to the EVMS plugin from the EVMS 2.0 tree. (EVMS 44752.0 is not yet supported; this only pulled in the bug fixes: fixed 4476possible hangs caused by bugs in calling waitpid, and not setting the 4477pipe to non-blocking mode; also fixed a file descriptor leak; made 4478sure all functions call log entry/exit functions.) 4479 4480Badblocks now flushes its output file as bad blocks are discovered. 4481 4482The uuid library is now more paranoid about assuming the correctness 4483of the /dev/random device; it mixes in a stream of bytes from 4484random/srandom, just in case. 4485 4486Update Debian files to reflect the fact that I am now the Debian 4487maintainer of e2fsprogs. Other various Debian-specific packaging 4488cleanups. 4489 4490Move the source tarball generation functions from the top-level 4491makefile to the util/gen-tarball script. 4492 4493Updated the Turkish .po translation file. 4494 4495Added Heimdal and MIT krb5 extensions to the com_err library to make 4496it more compatible with com_err libraries from those distributions. 4497 4498Changed dumpe2fs to always display the superblock fields relating to 4499the journalling and/or directory indexing feature even if those 4500features are not enabled. 4501 4502Updated and clarify copyright statement vis-a-vis alpha releases of 4503e2fsprogs. 4504 4505The ss library will now try to dynamically link to the readline 4506library and use it if it is present in the system. This means that 4507the debugfs program now has line editing and history features. The 4508SS_READLINE_PATH environment variable is used to find a readline or 4509readline-compatible library. 4510 4511E2fsck now finds most duplicate filenames (all when rebuilding all 4512directories via the -D option) and offers to delete or rename 4513duplicate filenames/directory entries. (Addresses Debian Bug #176814). 4514 4515Fix bug in e2image. When writing out a raw image file, include data 4516blocks from symlinks that do not store the symlink within the inode. 4517 4518Fix bug in resize2fs which incorrectly moved the block and inode 4519bitmaps for sparse superblock filesystems and incorrectly marked 4520blocks as in use. (Addresses Debian bug #174766) 4521 4522Added a new shared library, the blkid library, which efficiently 4523allows fsck, mke2fs, e2fsck, and tune2fs to be able to look up LABEL 4524and UUID filesystem specifiers without needing to search all of the 4525devices in the system. Instead, the device is looked up in a cache 4526file, and then verified to make sure the blkid cache is correct. 4527 4528Tune2fs and e2label will accept LABEL=xxx and UID=yyy specifiers for 4529the device name, using the blkid library. (Addresses Debian bugs 4530#166048, #179671) 4531 4532Fsck now supports backslash escapes in /etc/fstab so that \040 can be 4533used for spaces in device labels. 4534 4535Removed 32-bit limitations for debugfs's dump command. 4536 4537If the user specifies a large number of inodes, Mke2fs will 4538automatically adjust the number of blocks per group to find a valid 4539set of filesystem parameters. 4540 4541Add workaround to detect broken MD devices where when some of the 4542underlying devices are marked read-only, writes to the MD device are 4543silently dropped. E2fsck will detect if there is an attempt to run 4544the journal twice, and abort with an error if this is the case. 4545(Addresses IBM Bugzilla bug #1226) 4546 4547E2fsck will print an error if more than one of the -p/-a, -n or -y 4548options are specified. 4549 4550E2fsck will fix HTREE corruptions in preen mode, without stopping the 4551boot process. This is needed because the 2.4 ext2 filesystem 4552accidentally had the INDEX_FL backwards compatibility code removed. 4553 4554Mke2fs no longer creates filesystems with the dir_index flag set by 4555default; the user has to specifically request it. 4556 4557Update and clarified various man pages. (Addresses Debian bugs 4558#173612, #175233, #175113, and #170497, #185945, #188318) 4559 4560Created man page for the mk_cmds program (from the libss library). 4561 4562Programmer's notes: 4563------------------- 4564 4565Fix various gcc -Wall nits. 4566 4567Fixed a lot of portability problems that caused e2fsprogs not to build 4568successfully under Solaris and Apple/Darwin. 4569 4570Fixed a Makefile dependency to allow building e2fsprogs using parallel 4571make jobs. 4572 4573Changes to create a subset distribution which consists only of the 4574et, ss, uuid, and blkid libraries. The configure script and top-level 4575makefile were changed to support working with a subset distribution. 4576 4577Removed EXT2_FEATURE_RO_COMPAT_BTREE_DIR mention of since it's not 4578actually used, and might people who are looking for 4579EXT2_FEATURE_COMPAT_DIR_INDEX, which is in use. 4580 4581Updated debian files to fix a number of Lintian warnings. 4582 4583Updated config.guess and config.sub with newer versions from the FSF. 4584 4585Removed unnecessary libraries from being linked into the fsck, lsattr, 4586chattr, and blkid executables. 4587 4588E2fsprogs 1.32 (Nomvember 9, 2002) 4589================================== 4590 4591Fixed a bug in the Unix I/O routines which caused needless writebacks 4592of clean blocks from the unix_io cache (they were erroneously marked 4593as being dirty, so they were getting written back to disk before 4594getting evicted from the disk cache). This was harmless, but it 4595significantly slowed down e2fsck. 4596 4597Made some other minor optimizations to the Unix I/O routines to save a 4598small amount of CPU time. 4599 4600Updated internationalization files. 4601 4602 4603E2fsprogs 1.31 (Nomvember 8, 2002) 4604================================== 4605 4606Update EVMS ext2fsim plugin with EVMS 1.2. (We still support 4607compiling the fsim plugin with EVMS 1.0 and 1.1.) Add better error 4608handling for child process that die unexpectly. Add a hack to force 4609mkfs to create filesystems that won't cause problems with hardware 4610that has 2k or 4k minimum blocksize requirements. Read from child 4611processes in non-blocking mode, so that the GUI continues to update. 4612 4613Fix e2fsck so that it returns the appropriate exit code when the root 4614filesystem has been changed, so that system's rc scripts will be told that 4615the system needs to be rebooted. 4616 4617Fix a bug in ext2fs_flush/ext2fs_close; when the MASTER_SB_ONLY flag 4618was set, some of the descriptor blocks that should have been written 4619out were getting skipped. 4620 4621Changed e2fsck to force out changes to the backup copies of the 4622superblock and block group descriptors when important changes are made 4623to those data structures. 4624 4625Fix a bug where e2fsck could erroneously mark a filesystem as being 4626clean if a check of dirty filesystem is interrupted with a ^C. (Bug 4627introduced in e2fsprogs 1.28.) 4628 4629If journal debuging is enabled using --enable-jbd-debug, the debugging 4630level is now set via the E2FSCK_JBD_DEBUG environment variable. 4631 4632If byteswapping support is disabled using configure --disable-swapfs, 4633skip the tests which depend on byte-swapping, so that "make check" 4634won't bomb out. 4635 4636Lshattr will now display the indexed directory flag. Also, some of 4637the more esoteric compression flags are supressed unless compression 4638support has been enabled. 4639 4640Update man pages. 4641 4642 4643E2fsprogs 1.30 (October 31, 2002) 4644================================= 4645 4646When resizing a filesystem, and inodes need to moved, resize2fs will 4647update the inode's ctime field, and the mtime field of the containing 4648directories, so that incremental backups using dump/restore will work 4649correctly. 4650 4651In order to avoid spurious errors, e2fsck wil check the last 4652superblock write time to determine whether or not it can safely use 4653the LOW_DTIME checks to determine if there are inodes on the orphan 4654inode linked list that had somehow gotten disconnected. (Addresses 4655Sourceforge bug #620980) 4656 4657Partition in /proc/partitions that being with the string "lvm" are 4658considered real partitions even if they do not end with a number. 4659 4660Fixed a bug in the the uuid generation function, where if /dev/urandom 4661is not present, but /dev/random is, and there isn't sufficient 4662entropy, the get_random_byte function could spin a loop forever. 4663 4664E2fsck, mke2fs, etc. will now reliably notice when image files are 4665mounted using the loopback interface. (Addresses Sourceforge bug 4666#619119) 4667 4668When flushing buffers (as is done by badblocks, for example) check to 4669see if the BLKFLSBUF ioctl succeeds, and if so, avoid using the 4670FDFLUSH ioctl which causes the MD device driver which causes confusing 4671syslog messages about obselete ioctl messages. (Addresses Sourceforge 4672bug #545832). 4673 4674Debugfs's write command now checks to see if the destination filename 4675exists before creating it. (Addresses Sourceforge bug #478195.) 4676 4677When installing man pages, search for compressed man pages using all 4678commonly used compression extensions (i.e., .Z, .gz, .bz2, etc.) 4679 4680Fixed a bug in fsck where multiple filesystems specified on the 4681command were not being checked in parallel due to a logic bug 4682introduced to support the FSCK_MAX_INST environment variable. 4683 4684We have added a new superblock field, s_mkfs_time, which indicates 4685when a filesystem was created. It is set via mke2fs, and printed out 4686by dumpe2fs, but is not actually touched by the kernel. 4687 4688Dumpe2fs has been made more robust by not aborting if there is an 4689error reading the block/inode bitmaps; instead it will still print out 4690the location of the block/inode bitmaps and inode table. 4691 4692Add support for the an alternative block group descriptor layout which 4693allows for on-line resizing without needing to prepare the filesystem 4694in advance. (This is the incomat feature flag meta_bg.) 4695 4696Add support for storing default mount options in the superblock, so 4697that the filesystem can be mounted with specific mount options without 4698needing to specify them on the mount command line or in the /etc/fstab 4699file. 4700 4701Add support for a new inode flag, which is to be used for indicating 4702the top of directory hierarchies for the Orlov block allocator. 4703 4704Fix e2fsck so that if it creates the lost+found directory, it does so 4705with the more apporpriate permissions of 0700. Also change 4706mklost+found so that it also creates the directory 0700. 4707 4708Fixed format bug in e2fsck if NLS is in use. 4709 4710Add a German translation for e2fsprogs's NLS support. 4711 4712Fixed e2fsck so that it more handles BAD_BLOCK_IN_INODE_TABLE even at 4713the beginning of the inode table. This won't matter much, since if 4714there is a bad block at the beginning of the inode table, the root 4715directory won't be available. But at least e2fsck won't crash in this 4716case. 4717 4718Fixed endian problems in the htree code for e2fsck and debugfs. 4719 4720When byte-swapping a filesystem on a PPC architecture, byte-swap the 4721bitmaps since the historical big-endian ext2 variant had byte-swapped 4722bitmaps, and the ext2fs library assumes this. This fixes the 4723regression test suite on PPC machines. 4724 4725Fix e2image so that it handles a bad block in the inode table 4726appropriately. 4727 4728E2fsck now uses a more sophisticated algorithm to salvage corrupted 4729directories that recovers more information in the corrupted directory 4730block. 4731 4732E2fsck now performs additional consistency checks on indexed (HTREE) 4733directories. 4734 4735Fix bug where efsck might get confused about whether a completely 4736empty directory block is an empty leaf block or an interior htree 4737node. This could cause e2fsck to get confused into think that a valid 4738indexed directory was corrupted. 4739 4740E2fsck no longer creates an empty directory entry at the end of a 4741directory block when optimizing a directory. This would cause some 4742earlier versions of the dxdir kernel code to corrupt the directory 4743when attempting to split a node containing an empty directory entry. 4744 4745E2fsck could sometimes in rare circumstances leave the indexed flag 4746set after a small directory was optimized by compressing it instead of 4747indexing it. (This should never happen in real life, since 4748directories that small wouldn't have been indexed, but better safe 4749than sorry.) 4750 4751E2fsck now only updates the master superblock in all cases. This 4752slightly shortens its run time. 4753 4754Ext2ed can deal with directory entries of length 0; previously it 4755would get stuck in an infinite loop. 4756 4757Fsck now has support for reiserfs volumes when parsing LABEL= and UUID= 4758specifiers. (Sourceforge patch #613447) 4759 4760Badblocks will now work correctly on read-only devices such as 4761CD-ROM's. (Sourceforge patch #600451) 4762 4763Updated and clarified man pages. (Addresses Debian bug #167108) 4764 4765 4766E2fsprogs 1.29 (September 24, 2002) 4767=================================== 4768 4769Fixed a bug in e2fsck which could corrupt a directory when optimizing 4770it (via the -D option) or rebuiliding the hash tree index with a 1 in 4771512 probability, due to a fence post error. 4772 4773Fixed a bug in the LVM support code which caused LABEL='xxx' not to 4774work correctly. 4775 4776Mke2fs now enables the directory indexing flag by default. (Since 4777this is a compatible feature flag, it's safe to do so.) 4778 4779Tune2fs will support setting the directory indexing feature flag. It 4780will automatically set up the default hash algorithm and hash seed 4781fields in the superblock. 4782 4783If the bone-headed user enters the root filesystem twice in 4784/etc/fstab, the -R option which skips the root filesystem will skip 4785all of them. (Addresses Debian bug #159423). Note! This is not a 4786precedent for dealing intelligently with any other kind of doubled 4787entry in /etc/fstab! 4788 4789 4790Programmer's notes: 4791------------------- 4792 4793Removed perror declaration in lib/et/internal.h. All modern systems 4794can be expected to define perror() these days. Besides, the lib/et 4795code wasn't using perror at all anyway. :-) 4796 4797 4798E2fsprogs 1.28 (August 31, 2002) 4799================================ 4800 4801Add support for the Hashed-Tree Directory Indexing to e2fsck. Support 4802for setting the htree flag is not included yet, although it can be 4803manually turned on via the debugfs program. 4804 4805Clarified e2fsck error message which is printed when it cannot find 4806sufficient contiguous block when relcating filesystem metadata. 4807 4808Added support for building an EVMS plugin module for ext2/3. This 4809module is substantially the same as the EVMS module shipping with EVMS 48101.1, with one or two bugfixes. E2fsprogs can also build this plugin 4811for use with EVMS 1.0 (which did not include the ext2 plugin module), 4812if the configure --enable-old-evms flag is given. 4813 4814Fsck will search through EVMS volumes when trying to resolve 4815filesystem specifications such as LABEL=xxx or UUID=xxx. 4816 4817Added a new utility program, /sbin/findfs, which will return 4818filesystem specifications such as LABEL=xxx or UUID=xxx, and prints 4819the device name. 4820 4821Update and clarified various man pages. (addresses Debian Bug #145044, 4822#146437, #131350, #151990, #144621, #141938) 4823 4824If there are no filesystems specified on fsck's command line, fsck now 4825treat that as if the -As options were given. Previously it would 4826simply do nothing. (Addresses Debian Bug #153102) 4827 4828Mke2fs no longer treats a failure to be able to clear the MD signature 4829at the end of the filesystem as a fatal error. (Addresses Debian Bug 4830#155007) 4831 4832The e2p library functions (which are used by lsattr and chattr) now 4833double check to make sure the file is a regular file or directory 4834before attempting to use the ext2 ioctls. Some device drivers 4835unfortunately respond to the ext2 ioctl's with unknown behaviour. 4836(Addresses Debian Bug #152029). 4837 4838The extended attribute handling has been updated to correspond with 4839the latest V2 bestbits ACL code. 4840 4841Fixed bug in e2fsck which caused it to not clear the dtime field when 4842processing truncated inodes on the orphan list. This could cause data 4843loss(!) if a filesystem is rebooted before a truncate has been 4844committed. 4845 4846E2fsck now uses red/black trees in pass1b, which removes some O(n**2) 4847algorithms. This makes e2fsck much faster in the case of severely 4848corrupted filesystems where a large number of blocks are claimed by a 4849large number of inodes. (Thanks to the 2.5 IDE device driver for 4850inspiring this work.) 4851 4852Resize2fs has been significantly sped up when shrinking and expanding 4853a filesystem by a very small number of blocks (for example, when EVMS 4854is converting a partition to be an EVMS legacy volume). 4855 4856Added a new option to e2fsck, -D, which will optimize or compress all 4857of the directories in the filesystem. 4858 4859E2fsck now catches SIGINT and SIGTERM to make sure it will can 4860properly clean up and only exit at safe points. Fsck will pass 4861SIGINT/SIGTERM to its child processes, and wait until they have all 4862exited before it exits. 4863 4864The uuid parsing code in the uuid library now properly complains when 4865an illegally formated uuid is presented to it. (Addresses Debian bug 4866#152891) 4867 4868Restrict use of the 2.4 setrlimit ABI f*ckup to kernels between 2.4.10 4869and 2.4.17, since the workaround can cause problems when using a 2.4 4870kernel with an old version of glibc built with the 2.2 headers. 4871 4872Fixed a bug in mke2fs where it wasn't properly clearing the initial 4873superblock used by other filesystems. (Addresses Debian bug #147256.) 4874 4875Added support for the synchronous directory feature written by Andrew 4876Morton. 4877 4878The debugfs program can delete directories using the rmdir command. 4879 4880Add support for 8k and 16k filesystems (for systems with page sizes 4881that are greater or equal to 8k or 16k, respectively). Note that 4882these filesystems can not be mounted on x86 systems, or other systems 4883with only 4k page sizes, due to limitations in the current Linux VM 4884code. 4885 4886Resize2fs requires that the filesystem state be valid and have no 4887errors; otherwise, e2fsck -f must be run first. (Previously it simply 4888required that the last fsck time be greater than the last mount time.) 4889 4890Configure now defaults the man pages directory to /usr/share/man on 4891Linux systems. 4892 4893E2fsck now offers to truncate inodes which contain too many blocks (so 4894that i_blocks would overflow. Also fixed handling of large sparse 4895files. 4896 4897E2fsck now more completely checks for symlink validity, including 4898requiring NULL termination and length checks. 4899 4900E2fsck will offer to try forcing a disk write to remap a bad block 4901after finding a read error when reading a filesystem metadata block. 4902 4903Fixed a bug in debugfs which caused the -b and -s options to crash 4904debugfs, as well as breaking the testb, setb, and clearb functions. 4905 4906Added a bmap command to debugfs which calculates the logical to 4907physical block mapping for a particular inode. 4908 4909Fixed a bug in code which checked to see if a device was mounted which 4910sometimes (rarely) failed in the case of a plain file. 4911 4912Fixed a bug in resize2fs where when it reported an error, it would 4913print a message erroneously indicating that the filesystem had been 4914resized before it aborted. 4915 4916When resizing a plain file which is smaller than the requested size, 4917resize2fs will attempt to extended the file so that programs like 4918e2fsck will not complain that the file is too small. 4919 4920Resize2fs will print the actual new size of the filesystem when it is 4921finished resizing. 4922 4923Fixed a bug in debugfs where "ls -l" would report incorrectl file type 4924information on big-endian systems. 4925 4926 4927Programmer's notes: 4928------------------- 4929 4930Fixed collisions with C++ reserved words. 4931 4932Added portability fixes for building e2fsprogs on the HURD and AIX. 4933 4934Added the ext2ed program for creation of test cases. (ext2ed has many 4935limitations and bugs which make it unsuitable for production use.) 4936 4937The ext2fs_read_dir_block2 and ext2fs_write_dir_block now take a new 4938flag, EXT2_DIRBLOCK_V2_STRUCT, which will will reverse when the 4939name_len field is byte swampped on big-endian machines, since in the 4940V2 structure, name_len is a char field which is doesn't need to be 4941byte swapped --- except if an old-style kernel had byte-swapped the 4942name_len field as part of the V1 structure. 4943 4944 4945E2fsprogs 1.27 (March 8, 2002) 4946============================== 4947 4948The warning messages for mke2fs now go to standard error. 4949 4950Fixed to make sure "make check" runs all of the test programs with 4951LD_LIBRARY_PATH set, so that we test the libraries in the build tree. 4952 4953The mke2fs program checks the boot sector for the BSD disk label, and 4954avoids erasing it if it is there. 4955 4956Fixed a bug in e2fsck which caused it to core dump if the journal 4957inode was missing when it was supposed to be there. 4958 4959E2fsck now prints ranges in pass 5 when printing deltas for the block 4960and inode bitmaps. 4961 4962Debugfs's "ls -l" command now will print out the file type information 4963in the directory entry. 4964 4965Create man pages and hard links for fsck.ext3 and mkfs.ext3. If 4966mke2fs is invoked as mkfs.ext3, create the filesystem with a journal. 4967 4968Debugfs can now examine the experimental directory indexing 4969information. 4970 4971Fixed bug in debugfs which caused it to core dump if modify_inode is 4972called without an open filesystem. 4973 4974The debugfs lsdel command now runs its output through a pager first. 4975 4976When installing manual pages, remove the compressed manual pages first. 4977 4978Synchronized with Debian's packaging information for e2fsprogs-1.26-1. 4979 4980Fix the 2.4 resource limitation workaround introduced in 1.26 which 4981actually broke things on mips32, sparc32, and Alpha platforms. 4982 4983Updated the I18N code so that calls to setlocate(LC_CTYPE, 0) are made 4984(which is required by the newer libintl libraries). 4985 4986Programmer's notes: 4987------------------- 4988 4989Fixed various gcc -Wall complaints. 4990 4991Fixed a few memory leaks in the e2fsck journaling code, and in the 4992ismounted code checking for a swap device. 4993 4994Add new inode I/O abstraction interface which exports an inode as 4995an I/O object. 4996 4997Exported ext2_file_flush as a public interface. 4998 4999In ext2_file_write, we now mark the buffer void * argument as a const, since ext2_file_write doesn't modify the buffer. 5000 5001Lots of small random portability fixes to make e2fsprogs build under 5002AIX --- even without the 5L compatibility toolkit, and even using the 5003uber-crippled AIX native C compiler. 5004 5005 5006E2fsprogs 1.26 (February 3, 2002) 5007================================= 5008 5009Dumpe2fs will keep going now if the bad block inode can't be read. 5010(Previously it stopped with a fatal error.) 5011 5012E2fsck will now give an opportunity to run the journal even if the 5013recovery flag is not set. This is the default behaviour if e2fsck is 5014using a backup superblock, since the needs_recovery flag will never be 5015set in the backup superblock copies. 5016 5017E2fsck now automatically finds the backup superblock/group descriptors 5018even when the primary superblock is completely destroyed for 2k and 4k 5019filesystems. (Previously it just guessed/assumed that we were dealing 5020with a 1k filesystem in that case, and users had to manually specify 5021the backup superblock number.) 5022 5023Fixed a bug in e2fsck where it dereferences a null pointer when there 5024is a problem opening a filesystem in preen mode. 5025 5026E2fsck now handles external journals correctly; previously it trashed 5027the external journal device if the journal needed to be replayed. 5028 5029Work around ulimit incompatibility problem caused by recent 2.4 5030kernels; the unix IO module will automatically try to set any resource 5031limits to be infinite on startup. 5032 5033Fixed a bug in e2fsck where it wasn't allocating a new block or inode 5034bitmap if it wasn't present and the blocksize was 2k or 4k. 5035 (Addresses Debian Bug #116975) 5036 5037E2fsck will check and fix botched ext3 V1 to V2 superblock updates by 5038clearing the new V2 fields if they do not make sense or if the ext3 5039superblock is version 1 superblock. 5040 5041E2fsck will automatically relocate the ext3 journal from a visible 5042file (i.e., /.journal) to an hidden inode if the filesystem has been 5043opened read/write. This allows the users to add a journal while the 5044filesystem is mounted, but the next time the system is rebooted, the 5045journal file will disappear. This avoids problems with backups, 5046stupid operators with superuser bits, etc. 5047 5048Fix a bug in fsck where it would not support a filesystem type of 5049"auto" if the device was specified in terms of LABEL=xxx or UUID=xxx. 5050 5051Fsck now supports fstab entries of the form "ext3,ext2". It will also 5052automatically identify reiserfs filesystems. 5053 5054The number of processes spawned by fsck can now be limited using the 5055FSCK_MAX_INST environment variable. 5056 5057Fsck now searchs the LVM proc hierarchy to find logical volumes which 5058should be searched for UUID and label information. 5059 5060Work around a bug in 2.4.10+ kernels by trying to unset the filesize 5061limit if at all possible, when opening a block device. (The filesize 5062limit shouldn't be applied against writes to a block device.) 5063 5064In mke2fs and e2fsck, specifying the -c option twice will now do 5065a read/write test on the disk. Update the man pages to encourage 5066using the -c option, and to discouraging running badblocks separately, 5067since users tend to forget to set the blocksize when running 5068badblocks. 5069 5070Mke2fs now automatically clears the immutable attribute on a 5071pre-existing .journal file left over from a previous failed attempt to 5072add a journal to an alreadyy-mounted filesystem. 5073 5074Fixed mke2fs's exit codes to consistently indicate when the mke2fs 5075operation failed. 5076 5077Mke2fs now creates the lost+found directory with permissions of 0700, 5078so that files that had previously lived in protected directory are 5079safe if they get dropped in lost+found and the system administrator 5080doesn't deal with immediately. (Addresses Debian #bug 118443) 5081 5082Mke2fs and e2fsck (and all programs that use the 5083ext2fs_check_if_mounted function) will now properly identify that a 5084device is mounted, even in cases where devfs has confused things with 5085multiple devices names with the same identity, or if a dim-witted 5086system administrator has done something stupid like creating device 5087file aliases in their home directory. Also now checks for swap devices 5088by using /proc/swaps. (Addresses Debian bug #106622) 5089 5090Added a new option (-T) to tune2fs which sets the time a filesystem 5091was last checked. 5092 5093Speed up e2image when creating sparse raw image files by optimizing 5094away excess lseek() system calls. 5095 5096Fix support of large (> 2GB) files when used as a filesystem in 5097mke2fs, tune2fs, debugfs, and findsuper. 5098 5099Debugfs's stat and icheck commands now properly deals with large (> 51002GB) files. 5101 5102Debugfs's set_super_value command now prints out the list of valid 5103superblock fields which can be set using the command. 5104 5105Debugfs's rm and kill_file command now updates the superblock free block 5106and inode counts, thus keeping the filesystem consistent. 5107 5108Debugfs's lsdel command now takes an optional argument which allows 5109the user to only see the most recently deleted files. 5110 5111A new command (undel) was added to debugfs which automates 5112undeleting a deleted inode and linking it back to a directory. 5113 5114Debugfs's ls command now takes a new option, -d, which lists 5115deleted directory entries. 5116 5117Debugfs's testb, freeb, setb, and find_free_block commands now take an 5118optional count argument. 5119 5120Add support for a new ext2 file attribute, EXT2_NOTAIL_FL, which will 5121be used to signal that a particular inode should not be eligible for 5122tail-merging --- this is needed for programs like LILO. 5123 5124The findsuper (an unreleased, uninstalled utility program) has been 5125improved to add extra validity checks and to add a progress meter. 5126(It is still an unsupported program; the officially supported way to 5127recover from a trashed partition table is to use gpart; findsuper is 5128for wizards only. :-) 5129 5130Debugfs was fixed to compile with "configure --disable-swapfs". 5131 5132Cleaned up various manual pages. (Addresses Debian bug #119624, #120171) 5133 5134Added new translation file for Turkish. 5135 5136Programmer's notes: 5137------------------- 5138 5139Fix general gcc -Wall complaints. 5140 5141E2fsprogs (mostly) works with the dietlibc. 5142 5143The programming texinfo file has been expanded to include description 5144of additional libext2fs functions. (Still not compeltely done, but a 5145lot of the more important functions have been documented.) 5146 5147Added a umask structure to struct_ext2_filsys, which currently only 5148modifies the behaviour of ext2fs_mkdir(), but if we add any file 5149creation functions to libext2fs, we should also make sure they respect 5150the umask setting. 5151 5152The build-rpm script was fixed to be a bit more safe. 5153 5154The tests' Makefile now has a way of automating test case creation 5155for e2fsck, using "make testnew". 5156 5157Created a new function, ext2fs_dir_iterate2 which passes more 5158information to the callback function (identical to the one used by 5159ext2fs_dblist_dir_iterate). The directory iterator functions take a 5160new flag, DIRENT_FLAG_INCLUDE_REMOVED, which will return deleted 5161directory entries. If the directory entry is deleted, the callback 5162function will be called with the entry paraemter set to 5163DIRENT_DELETED_FILE. 5164 5165Added new functions, ext2fs_inode_alloc_stats and 5166ext2fs_block_alloc_stats, which takes updates block/inode allocation 5167statistics in the bitmaps, block group descriptors, and superblock 5168when inodes or blocks are allocated or deallocated. 5169 5170 5171E2fsprogs 1.25 (September 20, 2001) 5172=================================== 5173 5174This is primarily a bug-fix release; no new features were added, but 5175there are a number of embarassing bug fixes and cleanups applied. 5176 5177Fix a bug mke2fs which causes stack garbage to be written to disk when 5178zapping disk sectors. (This bug could cause mke2fs to core dump for 5179some kernels, I suspect with security enhancement patches.) 5180 5181Remove unneeded #include of <linux/config.h> which was breaking 5182building e2fsprogs on the Hurd. (Addresses Debian bug #112414.) 5183 5184Updated tune2fs man page to reflect the fact that adding or removing a 5185journal doesn't require running e2fsck. 5186 5187Remove use of AC_REQUIRE from autoconf which had been used to prevent 5188AC_CANONICAL_HOST from being called twice; unfortunately this causes 5189recent autoconf to bomb out since they don't allow AC_REQUIRE to be 5190used outside of autoconf macros. Fortunately, it doesn't seem to be 5191necessary any more, anyway. 5192 5193E2fsck will now not fall back to an alternate superblock if the user 5194specifies the superblock location explicitly on the command-line. 5195This allows easier recovery from a situation where the primary 5196superblock and block groups are slightly corrupted, but the backup 5197superblocks are completely broken. 5198 5199Fix problem which caused compile_et and mk_cmds to blow up if 5200e2fsprogs was in a directory with a pathname that contained spaces. 5201 5202We are now more paranoid about checking the entry in /etc/mtab to make 5203sure the filesystem is really mounted, since some broken distributions 5204(read: Slackware) don't initialize /etc/mtab before checking non-root 5205filesystems. (Slackware also doesn't check the root filesystem 5206separately, and reboot if the root filesystem had changes applied to 5207it, which is dangerous and broken, but there's nothing I can do about 5208that.) 5209 5210Make UUID library C++ friendly by adding appropriate extern "C" 5211declarations and using const in the function declarations. 5212 5213Fix up the com_err texinfo file so that it can product a valid info 5214file (previously, it could only be used to generate paper 5215documentation using texinfo.tex). 5216 5217 5218E2fsprogs 1.24a (September 2, 2001) 5219=================================== 5220 5221Fix brown-paper bug in mke2fs which caused it to segfault when 5222printing the version string. 5223 5224 5225E2fsprogs 1.24 (August 30, 2001) 5226================================ 5227 5228Revert the BLKGETSIZE64 support, since for some distributions, this 5229ioctl has been used by an unofficial kernel patch to update the last 5230sector on the disk, and this was causing disk corruption problems as a 5231result. 5232 5233Mke2fs is now more careful about zapping swap space signatures and 5234other filesystem/raid superblock magic values so that programs like 5235mount who try to use hueristics to determine the filesystem type of a 5236partition are less likely to be confused. 5237 5238E2fsck will no longer complain if the the mode of EXT2_RESIZE_INO is a 5239regular file (since Andreas Dilger's on-line resizing tools will set 5240its mode bits). 5241 5242Fixed some minor texinfo, man pages nits for spelling errors, 5243texinfo warnings, etc. (Addresses Debian bug #110621.) 5244 5245E2fsprogs program no longer print the filesystem version number 5246(i.e. 0.5b), since it only confuses people and doesn't serve any real 5247purpose. 5248 5249E2fsck will once again compile under libc5, since it will supply its 5250own version of strnlen if necesssary. 5251 5252mke2fs and tune2fs will allow the use of UUID= or LABEL= specifiers 5253when specifying the external journal device. tune2fs will also search 5254devices looking for the externla journal debice when removing. 5255 5256E2fsprogs 1.23 (August 15, 2001) 5257================================ 5258 5259Add initial support for extended attributes (EA); e2fsck will 5260correctly handle a filesystem with EA's and check the EA blocks for 5261corruptions. 5262 5263E2fsck's symlink sanity checking has been cleaned up. It now checks 5264the i_size value of fast symlinks, and checks for immutable flags 5265being set of symlinks, etc. 5266 5267E2fsck now offers to clear inodes which are special files that have a 5268non-zero i_blocks or i_size field. (The i_size field check was in the 5269previous version of the code, but due to a bug it didn't offer to 5270clear the inode unless i_size and i_size_high were both non-zero.) 5271 5272E2image can now create "raw" image files, which only contain the 5273filesystem metadata placed in a spare file so that e2fsck, dumpe2fs, 5274debugfs, etc., can be run directly on the raw image file. 5275 5276Add support for the 64-bit block device patches. 5277 5278Fixed bugs in creating external journals with a 1k blocksize. 5279 5280Add initial support for external journals (so long as the external 5281journal only supports a single filesystem) in e2fsck. 5282 5283Remove requirement for needing to run fsck on a filesystem after 5284removing a journal (either internal or external). 5285 5286The man pages now document how to create and manage external journals. 5287 5288Speed up the check of an ext3 filesystems by avoiding a needless flush 5289of all of the superblock and block group descriptors. 5290 5291Speed up creating an internal journal using tune2fs in the case where 5292the filesystem has a lot blocks already allocated. 5293 5294Tune2fs has been fixed to make sure that only error messages go to 5295stderr, and normal message go to stdout. (Addresses Debian bug #108555) 5296 5297Fixed a minor bug in mke2fs; if -O none is passed to mke2fs, it will 5298now not set the sparse_super feature. (Addresses Debian bug #108165) 5299 5300Add support in fsck for the filesystem type "auto". 5301 5302Fsck -A will not try to interpret device names for filesystems which 5303have a pass number is 0. (Addresses Debian bug #106696). 5304 5305Fsck prints a warning message if now valid filesystems are passed to 5306it. (Addresses Debian Bug #107458.) 5307 5308E2fsck now gives an explicit warning if there filesystem still has 5309errors at the end of the run. (Addresses Debian bug #104502) 5310 5311E2fsck will set the EXT2_ERROR_FS flag if the journal superblock 5312reflects an error. E2fsck will also not run the orphan list if the 5313filesystem contains errors, since the orphan list might be corrupted. 5314 5315E2fsck now prints the number of large files when given the -v option. 5316 5317Fixed minor memory leaks in e2fsck. 5318 5319Some minor man pages updates. (Addresses Debian bug #30833, #108174) 5320 5321 5322E2fsprogs 1.22 (June 22, 2001) 5323============================== 5324 5325Fixed a bug in e2fsck's handling of orphan inodes which are special 5326files (i.e., block/character device files, named FIFO's, etc.). 5327 5328Fixed a bug accidentally introduced in e2fsprogs 1.21 which caused 5329tune2fs to fail at adding a journal to a mounted filesystem. 5330 5331Fixed a few big-endian bugs in e2fsprogs 5332 * The directory block functions were accidentally reporting 5333 some directories as corrupted when they weren't. 5334 * If e2fsprogs is compiled --disable-swapfs, the C language 5335 equivalents weren't being included for big-endian platforms. 5336 (Fixes Debian bug #101686). 5337 5338Fixed a Hurd compilation problem. (Addresses Debian bug #101361) 5339 5340Programmer's notes: 5341------------------- 5342 5343Use platform independent method of defining the BLKFLSBUF and FDFLUSH 5344ioctls, and allow them to be defined for non-i386 platforms. 5345 5346The uuid.h header file is now protected against multiple inclusions. 5347 5348E2fsprogs is now being developed using BitKeeper. Changed the test 5349scripts to deal with BK's stripping CR characgters from text files, 5350and changed the top-level Makefile.in to avoid including BitKeeper 5351files when generating the source tarball. 5352 5353 5354E2fsprogs 1.21 (June 15, 2001) 5355============================== 5356 5357Added new configure flags which allow a subset e2fsprogs to be built; 5358this is most useful for boot floopies, since the resulting shared 5359libraries and programs are slimmed down by removing features that 5360aren't necessary for a boot floppy. The new flags that were added 5361are: --disable-swapfs, which removes support for byte swapping old 5362legacy PPC/68k filesystems, --disable-debugfs, which removes support 5363for debugfs from the libext2fs library, --disable-imager, which 5364removes support for the e2image program, and --disable-resizer, which 5365removes support for resize2fs. 5366 5367E2fsck now prints the number of mounts or days elapsed since the last 5368check when e2fsck is forced to check an otherwise clean filesystem. 5369 5370Tune2fs now prints an informative message about how often a filesystem 5371will be checked when adding a journal to the filesystem, to remind the 5372user that he/she may want to adjust those parameters using tune2fs 5373-c/-i. 5374 5375Worked around hurd brain-damage which causes e2fsck to sometimes 5376believe a filesystem is the root filesystem based on device numbers 5377(since Hurd doesn't have dev_t's, which is arguably a POSIX.1 5378violation). 5379 5380Fixed a bug introduced in 1.20 which caused e2fsck to abort with an 5381erroneous error with the -F option was specified. 5382 5383Fixed a ext3 recovery bug in the revoke handling; synchronized with 5384ext3 0.7a. 5385 5386Fixed two bugs in e2fsck's handling of dup block handling, dealing 5387with relatively uncommon edge cases: a directory with an indirect 5388block which is claimed by another file, and when the last inode in the 5389filesystem has blocks claimed by another file. 5390 5391E2fsck now checks to see if the i_size field of a fast symlink is too 5392big, and offers to clear the symlink if so. 5393 5394E2fsck now checks to see if i_size_high of special files is non-zero, 5395and offers to clear i_size_high. 5396 5397Fix e2fsck's handling of incompatible journal flags so that the user 5398has chance to abort, and then has the option to clear out the journal 5399entirely. (Addresses Debian bug #98527.) 5400 5401Fixed a bug in fsck which could cause it to core dump if a mix of 5402standard and non-standard device names are used in /etc/fstab. 5403(Debian bug #100559) 5404 5405Fixed a bug in debugfs which caused read errors when copying a file to 5406not be noticed. 5407 5408The debugfs set_super_value command can now modify the s_lastcheck field. 5409 5410Fixed a bug in lsattr and chattr which was accidentally introduced in 54111.20 to support > 2GB files; both lsattr and chattr wasn't reading 5412directories correctly because the change modified the layout of struct 5413dirent to be incompatible with the libe2p shared library. 5414 5415Cleaned up the mke2fs manual page and included a discussion about why 5416it's good to periodically check the filesystem even when journaling is 5417enabled. 5418 5419Programmer's notes: 5420------------------- 5421 5422Fix general gcc -Wall complaints. 5423 5424The types needed by the ext2 header files are now provided by 5425lib/ext2fs/ext2_types.h, instead of include/asm/types.h. 5426 5427Integers are now preferred to longs when trying to find a 32-bit type 5428in ext2_types.h. Also, if linux/types.h has already been defined, 5429don't try to redefine the types. 5430 5431Fixed make depend script so that it automatically corrects the 5432pathname cleanups performed by make -M, so I don't have to fix them up 5433by hand. 5434 5435Fixed the d_loaddump test case to be more robust, and not depend on 5436bash'isms. 5437 5438Removed debugfs's dependence on pread(), which was accidentally 5439intrudced in e2fsprogs 1.20 5440 5441Fixed a performance bug in the libext2fs's icount routine; the size 5442estimate of the icount array was incorrectly being calculated. 5443 5444Removed use of the badblocks compatibility functions in the e2fsprogs 5445programs. 5446 5447Added paranoia code which protects against strange cases where /etc 5448isn't on the root filesystem, or if /etc/mtab doesn't exist. 5449 5450The header file ext2_types.h is now installed. 5451 5452Autoconf is used to determine when we are on big-endian machines, 5453instead of doing run-time tests, to save a few bytes of code. 5454 5455The ext2fs_mark_generic_bitmap and ext2fs_unmark_generic_bitmap 5456functions are no longer inline functions, which saves space and 5457doesn't really cost any real performance. 5458 5459The ext2fs library no longer depends on the e2p library. (What need 5460there was of it --- namely, fsetflags, was coded in-line). 5461 5462Fixed the makefile so that lib/ext2fs/ext2_types.h is generated even 5463when the user is stupid and tries compiling the package using "make 5464install" as root. 5465 5466Miscellaneous code cleanups: 5467 * Added missing files from Makefile.in's SRCS file, so that 5468 their dependencies would be properly calculated. 5469 * Removed redundant code 5470 * Fixed comments in code 5471 * Removed no-longer unneeded argsused #pragma. 5472 5473 5474E2fsprogs 1.20 (May 20, 2001) 5475============================= 5476 5477Add support for replaying the ext3 journal purely in user mode, 5478including handling the orphaned inode list. Used code contributed by 5479Andreas Dilger, with bug fixes and the orphaned inode handling done 5480by Theodore Ts'o. 5481 5482The mke2fs and tune2fs programs can create or modify a filesystem to 5483include an ext3 journal. Tune2fs also can be used to remove an ext3 5484journal from a filesystem. 5485 5486E2fsck will now check for the existence of a linked list of orphan 5487inodes in the superblock, and clear those inodes before starting the 5488rest of the filesystem check (but after the journal playback). 5489 5490E2fsck now validates the file descriptor passed to the -C option, 5491which saves against the completion bar getting written to an 5492unexpected location, such as the disk being checked. (Debian 5493bug/wishlist #55220) 5494 5495E2fsck will now bump the filesystem revision number from zero to one 5496if any of the compatibility bits are set. 5497 5498Fixed a bug where a badly corrupted directory on a big endian system 5499could cause e2fsck to die with a bus error. The 5500ext2fs_read_dir_block() and ext2fs_process_dir_block() functions in 5501the ext2 library now does alignment sanity checks on the rec_len field 5502of the directory entry before using it. 5503 5504The ext2 library has been enhanced to make tune2fs safe to run on 5505mounted filesystems. (Users could usually get away with using tune2fs 5506on mounted filesystems before, but with the advent of ext3 and 5507journaling, it became important to make tune2fs was *really* safe for 5508use even when the filesystem being modified is mounted.) E2label is 5509now implemented by tune2fs using an argv[0] dispatch, so that e2label 5510is also now safe for use on mounted filesystems. 5511 5512Added a new program, e2image, which creates a backup of critical ext2 5513filesystem data structures. The generated image file can be examined 5514using dumpe2fs and debugfs. In the future, e2fsck will be able to use 5515the image file to help recover very badly damaged filesystems. 5516 5517Fixed a number of LFS bugs in e2fsck; very, very large (> 2**42) files 5518no longer cause e2fsck to bomb out. Also treat files > 2GB as being 5519large file when deciding whether or not the filesystem has large files. 5520 5521Fixed lsattr and chattr so that they work correctly on large files. 5522(Fixes Debian bug #72690.) 5523 5524Removed limitation in get_device_size() which imposed a one terrabyte 5525filesystem limitation. (Most 2.2 kernels still have a signed int 5526problem which cause 1 TB block device limitation. Fortunately, the 5527kernel patches to fix this are much easier than fixing the 2TB 5528limitation in the kernel. :-) 5529 5530A max_mount_count of zero is now treated as if no mount count were 5531set. (Previously, no mount count was indicated by using -1, and a 5532mount count of zero caused e2fsck to always be run.) 5533 5534Mke2fs supports two new filesystem types largefile and largefile4. 5535 5536Mke2fs now adds some randomness in s_max_mount_count so that multiple 5537filesystems won't be all checked at the same time under normal 5538operations. 5539 5540Fixed bug in the progress bar printing code which could cause e2fsck 5541to core dump on an illegal filesystem. 5542 5543Fixed bug in fsck which could allow more than one instance of e2fsck 5544to be printing a progress bar. (Debian bug #65267) 5545 5546Fsck using a UUID or a LABEL specifier will work even if devfs is 5547compiled into the kernel and not mounted. If the pathnames in 5548/proc/partitions are incorrect, fsck will search /dev for the correct 5549device (using the new ext2fs_find_block_device library function). 5550Fsck now also checks the RAID devices first so that they are properly 5551found when they are in use. Support has also been added to support 5552additional IDE disks and the DAC 960 device names. (Debian bug #94159) 5553 5554Fixed a bug in fsck which caused it not deal properly with 16 5555byte long filesystem labels. 5556 5557Fsck's -t option has been made a lot more flexible. The semantics for 5558what happens if a comma-separated list to fsck has been regularized, 5559and it is now possible to filter what filesystems will get checked 5560based what is in the filesystem's fstab entry's option field. (Debian 5561bug #89483.) 5562 5563The dumpe2fs program can now print out the group description 5564information in hex, and also prints the location of the superblock and 5565block group descriptor for those block groups that have them. 5566 5567Mke2fs now clears the ext2 superblock before it starts creating a 5568filesystem, so that the superblock magic number is only written if the 5569filesystem creation process successfully completes. 5570 5571The debugfs program's stat command now pretty-prints the blocks used 5572by an inode so that it's more compact and informative. 5573 5574The debugfs stats command now uses the same libe2p code (which is used 5575by dumpe2fs) to print the superblock header information. This is more 5576complete, and it avoids a bit of code duplication. 5577 5578Added a new debugfs command, set_super_value (ssv) which allows the 5579user to set arbitrary superblock fields. 5580 5581Debugfs was extended to support inode numbers in hex (by prefixing 5582them with 0x), and so that modify_inode can set the inode generation 5583number. Also, there is now a new function command called logdump 5584which will dump an ext3 journal. 5585 5586Fixed a bug in debugfs so that quitting out of the pager doesn't kill 5587debugfs. 5588 5589Debugfs's dump command now stops immediately upon reporting a disk 5590read error. (Fixed a bug in ext2fs_file_read library routine which 5591caused debugfs not to stop.) (Debian bug #79163) 5592 5593On systems with /proc/mounts (mainly Linux systems), /proc/mounts is 5594checked before /etc/mtab is used, since /proc/mounts is more likely to 5595be accurate. 5596 5597Added portability fixes for Solaris and Linux/ia64. 5598 5599Various manual pages were clarified and cleaned up. (Fixed debian 5600bugs #63442, #67446, and #87216) 5601 5602 5603Programmer's notes: 5604------------------- 5605 5606The e2fsck message printer now supports %Iu and %Ig, which will print 5607out the inode's user and group owners, respectively. 5608 5609E2fsprogs now includes its own version of include/linux/ext2_fs.h, so 5610that no longer dependent on the system having the correct version of 5611the kernel header files. 5612 5613Added a new function to libext2, ext2fs_find_block_device(), which 5614searches the system (i.e., /dev, /devfs, /devices) for a pathname to a 5615device given its device number. 5616 5617Added a new function to libext2, ext2fs_sync_device, which centralizes 5618all of the places which might try to use the BLKFLSBUF or FDFLUSH 5619ioctls (and usually failing to define them since the system header 5620files don't usually do this for us, and we're trying to avoid usage of 5621kernel include files now). 5622 5623Added new utility programs in tests/progs: random_exercise and 5624hold_inode. They aren't built by default; they're useful for 5625exercising ext3 filesystem code. 5626 5627Added a new ext2 filesystem flag, EXT2_FLAG_SUPER_ONLY, which causes 5628the filesystem close functions to only update the superblock, and to 5629not touch the block group descriptors. Needed by tune2fs when 5630modifying a mounted filesystem. 5631 5632Got rid of struct ext2fs_sb and replaced it with the standard struct 5633ext2_super_block from include/linux/ext2_fs.h. Note: this may break 5634source (but not binary) compatibility of some users of the ext2 5635library. Those applications should just simply do a global search and 5636replace of struct ext2fs_sb with struct ext2_super_block, and include 5637the new header file <ext2fs/ext2_fs.h> which defines it. 5638 5639The ino_t type has been renamed ext2_ino_t to protect applications 5640that attempt to compile -D_FILE_OFFSET_BITS=64, since this 5641inexplicably changes ino_t(!?). So we use ext2_ino_t to avoid an 5642unexpected ABI change. 5643 5644The Makefiles have been reworked so that "make check" can be run from 5645the top-level Makefile. 5646 5647Fix general gcc -Wall complaints and removed dead code. 5648 5649Remove use of NOARGS, because we assume everyone does ANSI C these 5650days. 5651 5652Added build-rpm script from sct. 5653 5654New functions ext2fs_image_{inode,super,bitmap}_{read,write} added 5655to support e2image. 5656 5657New function ext2fs_flush_icache which must be called if the 5658application program modifies the inode table blocks without going 5659through ext2fs_write_inode() interface. 5660 5661New ext2fs_check_mount_point() function, which will return the mount 5662point of a device if mounted. 5663 5664The io_channel abstraction now has an optional interface, 5665io_channel_write_range, which allows specific byte ranges to be 5666written. 5667 5668The unix_io IO channel now supports write-through caching, so that 5669journal creation is more efficient. 5670 5671Added x86 assembly language routines to support byte swapping, to 5672reduce executable size. 5673 5674Fixed bug in the utility program subst so that it's possible to 5675replace a substitution variable with a zero-length string. 5676 5677Fixed numbering e2fsck pass1 problem numbers; an extra zero had 5678slipped into some of the problem number. 5679 5680E2fsprogs 1.19 (July 13, 2000) 5681============================== 5682 5683Release the resize2fs program since the timeout before it could 5684be released under the GPL has finally expired. 5685 5686Add experimental support needed for the ext2 compression patches. 5687This requires compiling e2fsprogs with the --enable-compression flag 5688to the configure script. 5689 5690Added ext3 journalling support. E2fsck will run the journal (if 5691necessary) by temporarily mounting the filesystem. /sbin/fsck.ext3 is 5692installed as a symlink to e2fsck. Fsck has been taught about ext3, 5693and treats it the same as ext2 in terms of the progress bar logic. 5694Dumpe2fs will display the superblock journaling information if the 5695filesystem has a journal. The ext2 library will now permit opening an 5696ext3 filesystem with the recovery flag set. This is necessary for 5697on-line dump's to work correctly, but there may be issues with this 5698working well since ext3 is much less agressive about syncing blocks to 5699the filesystem, since they're safe on the journal. 5700 5701Tune2fs and e2fsck have been changed to allow the mount_count check to 5702be disabled by setting max_mount_count to -1. (This was already 5703supported by the kernel.) 5704 5705Create a symbolic link for fsck.ext3, since the e2fsprogs utilities 5706are used for ext3 as well. 5707 5708Added internationalization support for e2fsprogs; must be enabled 5709by passing --enable-nls to configure. 5710 5711Always use the provided ext2fs header files to insulate ourselves from 5712kernel version changes. Which include files are used by e2fsprogs 5713have also been cleaned up to improve portability. 5714 5715Limit the number of times that e2fsck updates the progress bar so that 5716people who are booting using a 9600 baud console don't get swampped by 5717too many updates. 5718 5719Improved the loop detection algorithm in e2sck's pass #3 so that it is 5720much, much faster for large filesystems with a large number of 5721directories. 5722 5723The memory footprint for e2fsck is now slightly smaller than before. 5724 5725E2fsck now checks if special devices have a non-zero size, and offers 5726to clear the size field if it finds such an inode. 5727 5728E2fsck now checks if special devices have the append-only flag set, 5729and offers to clear the inode. 5730 5731E2fsck now properly handles some "should never fail" cases during a 5732bitmap copy in pass5. 5733 5734E2fsck now properly prints control characters in filenames as ^A .. ^Z. 5735 5736E2fsck now calculates the correct location of the backup superblock in 5737the case of filesystem blocksizes > 1k. 5738 5739Fixed a bug in e2fsck's calculation of the number of inodes_per_block 5740which normally didn't cause problems under most filesystem parameters, 5741but could cause a valid superblock to be rejected in extreme cases. 5742Other checks for validating superblock values were made more 5743stringent. 5744 5745Added non-destructive write testing to the badblocks program, courtesy 5746of David Beattie. The badblocks also now has an option to input the 5747current set of bad blocks, so that known bad blocks are skipped to 5748speed up the badblocks test. There is also a persistent rescan 5749feature which causes badblocks to run until it has completed some 5750number of passes without discovering any new bad blocks. 5751 5752Badblocks now checks to see if the device is mounted and refuses to do 5753the tests involving writing to the device if it is mounted. Also, 5754badblocks now allows the number of blocks to be checked to be 5755defaulted to the size of the partition. 5756 5757Fixed a bug in fsck which didn't allow non-root users to be able to 5758check filesystems if there were any LABEL= or UUID= entries in 5759/etc/fstab. 5760 5761The Hurd doesn't support the filetype filesystem feature. The mke2fs 5762program now makes sure that for the Hurd, the filestype feature is 5763turned off. E2fsck will check to see if the filetype feature is 5764turned on for Hurd filesystems, and offer to turn off the feature. 5765 5766Mke2fs now has a safety check to make sure the number of blocks do not 5767exceed 32 bits even on a 64 bit platform. 5768 5769Really fixed a bug in fsck to allow "fsck -As" to run interactive 5770fsck's. (For those people who like to do interactive fsck's in the 5771/etc/rc scripts!?!) 5772 5773Debugfs has a few new features: the rdump command, which will do a 5774recursive dump of a directory and all of its contents, and the lcd 5775command which does a local chdir (much like the ftp command of the 5776same name). In addition, the debugfs program and the open_filesystem 5777command now takes three new options: -b and -s, which allows the 5778blocksize and superblock location to be specified, and the -c option 5779which is used in catastrophic situations where the block group 5780descriptors are corrupt. If the -c option is specified, debugfs will 5781skip trying to read in the block and inode bitmaps. 5782 5783Debufs's lsdel command was fixed to handle bad blocks in the inode 5784table. 5785 5786A Y2K bug in debugfs's "ls -l" handling was fixed by switching to use 57874 digit years. 5788 5789General improvements in error messages 5790 5791 - Mke2fs prints a sane error message if the partition size is zero 5792 (usually because the partition table wasn't reread by the 5793 kernel due to the partition being busy), instead of "invalid 5794 argument passed to ext2 library while initializing superblock". 5795 5796 - Fsck now prints more self-explanatory message if an invalid UUID= 5797 or LABEL= specification is passed to it. 5798 5799UUID library changed to use the LGPL. 5800 5801Fixed a bug in the UUID library where very rapid calls to the 5802time-based UUID generator could cause duplicate UUID's to be returned. 5803This was not a problem for e2fsprogs, but it could be a problem for 5804other users of the library. 5805 5806Make the UUID library more robust in the face of missing or an 5807improper /dev/urandom or /dev/random files. 5808 5809Added some random portability fixes for Solaris. 5810 5811Some minor man page updates. 5812 5813Fixed a memory leak in the ss library. 5814 5815 5816Programmer's notes: 5817------------------- 5818 5819We now try to use lseek64 and open64 from the LFS if possible. 5820 5821The 3rd parameter in e2p's print_flags is now a flags word, instead of 5822a boolean option. 5823 5824The mark and unmark bitmap functions now return the previous state of 5825the bit that was being changed, which is useful for some speed 5826optimizations. 5827 5828The following functions have been added to enhance the badblocks list 5829handling in libext2fs: ext2fs_write_bb_FILE, ext2fs_read_bb_FILE2, and 5830ext2fs_badblocks_equal. 5831 5832The ext2 header files now have the latest journalling fields to the 5833superblock. 5834 5835The ext2fs_mkdir function in libext2fs now properly backs out of error 5836conditions robustly. 5837 5838Cleaned up makefiles: 5839 - to cleanly compile with the -j flag. 5840 - so distclean removes all generated files. 5841 - so in case of an error while installing header files, the make aborts. 5842 5843Fix test_script so that it works correctly when compiling in the 5844source directory. 5845 5846The random UUID generation routine has been made slightly better in 5847the case where /dev/random doesn't exist. (Use of randomly-based UUID 5848is still not recommended if /dev/random doesn't exist, however; it's 5849better to use the time/ethernet MAC address UUID in this case.) 5850 5851Clean up the build process so it's more friendly in case of missing 5852directories. 5853 5854The ext2fs header file can now be #include'd into C++ programs. 5855 5856The e2p.h header file is now installed. 5857 5858Added workaround to a gawk 3.0.5 bug in lib/ss/mk_cmds. 5859 5860 5861 5862E2fsprogs 1.18 (November 10, 1999) 5863================================== 5864 5865Fix a core dumping bug in e2fsck if an imagic inode is present or 5866(more rarely) if the filesystem is badly corrupted enough that e2fsck 5867has to restart pass 1 processing. E2fsck now closes the filesystem 5868before freeing a large number of its data structures, so in the case 5869of future memory faults, at least the fixed filesystem will be fully 5870written out. 5871 5872If a filesystem doesn't support imagic inodes, and e2fsck discovers an 5873imagic inode, it will offer to clear the imagic flag. 5874 5875E2fsck will now offer to clear the immutable flag on special files 5876(device/socket/fifos) when running it in non-preen mode. 5877 5878E2fsck will now set the filetype when creating /lost+found, and when 5879connected orphaned inodes to /lost+found. 5880 5881Debugfs's ncheck and icheck commands now handles the case where there 5882are bad blocks in the inode table without bombing out. 5883 5884The badblocks list processing code has been made more efficiently for 5885appending a large number of (ordered) badblocks to the badblocks list. 5886 5887Some minor man page updates. 5888 5889Fsck now allows interactive e2fsck's when using fsck -As (not a common 5890mode, but some people like to do this in boot scripts for silly reasons). 5891 5892Programmer's notes: 5893------------------- 5894 5895The internal e2fsck problem code for PR_2_SPLIT_DOT was fixed to meet 5896with the problem code convention. 5897 5898The badblocks list regression test program has been updated to work 5899with previously made API name changes. 5900 5901The ext2fs_free() command now uses the new badblocks API to avoid 5902using the compatibility layer. 5903 5904Added new regression test cases; the run_e2fsck test script now 5905supports the ability for a test case to run a prepratory command 5906before running e2fsck. 5907 5908E2fsprogs 1.17 (October 26, 1999) 5909================================= 5910 5911Fixed nasty typo in fsck which caused parallelized fsck's to go into an 5912infinite loop. 5913 5914Fixed a bug in fsck where it used strncmp to compare a binary UUID, 5915thus potentially causing problems if a binary UUID contained a NULL 5916character. 5917 5918E2fsck now uses stricter checks for directory entries in pass 2: 5919zero-length filenames are not allowed; neither are 8 byte long 5920directory entries. 5921 5922The debugfs "dirty" command now clears the filesystem valid bit. 5923(Previously this just set the dirty-as-in-needs-writing-out-to-disk 5924bit in the in-core superblock image. The new functionality is more 5925what the user expects, and is more useful.) 5926 5927Added a debugging hook to test parallel fsck; if the environment 5928variable FSCK_FORCE_ALL_PARALLEL, then filesystems on the same drive 5929will be checked in parallel when they normally would not be. 5930 5931Programmer's notes: 5932------------------- 5933 5934Fixed some #ifdef's for compilation under the Hurd OS. 5935 5936Fixed minor W2K compatibility problems. 5937 5938Fixed some miscellaneous GCC warnings. 5939 5940 5941E2fsprogs 1.16 (October 22, 1999) 5942================================= 5943 5944Fixed a race condition bug in fsck; when printing a progress bar, if 5945checking multiple filesystems in parallel, it was possible for fsck to 5946send e2fsck a SIGUSR1 signal before e2fsck had installed its signal 5947handler, which would cause it to terminate with a signal 10. 5948 5949E2fsck now properly handles filesystems that have the 5950INCOMPAT_FILETYPE feature turned on. It can be used to convert a 5951filesystem into using or not using FILETYPE feature. 5952 5953E2fsck now properly handles filesystems that have the IMAGIC feature 5954turned on (this is used on Linux AFS servers). 5955 5956The mke2fs program now creates filesystems that have the filetype and 5957sparse_superblock features enabled by default, unless it is run on a 5958pre-2.2 kernel. These features are not supported by a pre-2.2 kernel, 5959so there is now a new flag -O which allows the user to specify with 5960which features she would like to create the filesystem; "mke2fs -O 5961none" will create a filesystsem compatible with 2.0 kernels. 5962 5963The tune2fs program now has a -O option which allows the user to set 5964and reset "safe" filesystem features. Currently, the only ones which 5965allows to be modified are the filetype and sparse_superblock features. 5966Note setting or clearing either feature will require running e2fsck on 5967the filesystem afterwards. (n.b. Clearing the sparse_superblock feature 5968requires that there is enough free space on the filesystem for the 5969extra superblocks which will be created by e2fsck.) 5970 5971Debugfs can now set and print filesystem features in the superblock 5972using the "features" command. Dumpe2fs will print out the complete 5973set of features when listing the superblock. 5974 5975Dumpe2fs has new options -f (force) and -h (header-only). 5976 5977Fixed a bug in e2fsck which could cause the PROGRAMMING ERROR/bonehead 5978message to come up. This could happen when decrementing or 5979incrementing a link count could result in an overflow. 5980 5981Fixed a bug in e2fsck where the block count on the lost+found 5982directory would not be properly incremented when the directory was 5983expanded to the point where an indirect block needed to be allocated. 5984 5985E2fsck now makes some additional sanity checks on the superblock to 5986avoid crashing or giving a memory allocation error if some of the 5987values in the superblock are unresonable (but the superblock otherwise 5988looks valid). 5989 5990Fixed a bug in e2fsck where a very badly corrupted filesystem might 5991require two passes to completely fix the filesystem. This happened if 5992an inode claimed blocks that was part of the filesystem metadata 5993(typically, when garbage was written into an inode table or indirect 5994block, since this kind of filesystem corruption normally doesn't 5995happen otherwise). 5996 5997On the Alpha, glibc declares st_flags although it isn't actually used; 5998the configure script was improved to detect this case so that 5999e2fsprogs can avoid using the non-functional stat field. 6000 6001The manual pages were updated to use a more consistent formatting 6002style consistent with standard Unix man pages. Mke2fs's man page 6003added documentation for a few previously undocumented options. 6004 6005Fixed minor display bugs in tune2fs and mke2fs. 6006 6007Programmer's notes: 6008------------------- 6009 6010Improved portability of e2fsprogs to non-Unix systems (in particular, NT). 6011 6012Added features to parse and print feature strings into the e2p library. 6013(e2p_feature2string, e2p_string2feature, e2p_edit_feature). 6014 6015ext2fs_mkdir() and ext2fs_new_dir_block() now creates directories 6016whose directory entries contain proper filetype information if the 6017filesystem supports it. 6018 6019ext2fs_link() now uses the low 3 bits of its flags parameter to pass 6020the directory entry filetype information. This is used to set the 6021directory entry filetype information if the filesystem supports it. 6022 6023Fixed a bug in ext2fs_expand_dir() where the block count in a 6024directory's inode would not be properly incremented when the directory 6025was expanded to the point where an indirect block needed to be 6026allocated. 6027 6028 6029E2fsprogs 1.15 (July 18, 1999) 6030============================== 6031 6032Add configuration checks so that e2fsprogs will compile cleanly on 6033Linux 2.3 kernels that have renamed i_version to i_generation. 6034 6035E2fsck now prints a progress/completion bar (and not just a simple 6036spinner) if the -C0 option is requested or if it receives a SIGUSR1 6037signal. Fsck will automatically manage the (potentially muliple) 6038e2fsck processes to print completion bars if it is given a -C option, 6039with the right thing happening if multiple filesystems are being 6040checked in parallel. 6041 6042Mke2fs now has better automatic hueristics to determine the filesystem 6043parameters to be used for a particular filesystem. Added a new option 6044-T which allows the user to specify how the filesystem is to be used, 6045which helps mke2fs do a better job selecting the filesystem parameters. 6046 6047Mke2fs now creates revision 1 filesystems by default, and with the 6048sparse superblock feature enabled. The sparse superblock feature is 6049not understood by Linux 2.0 kernels, so they will only allow read-only 6050mounts of filesystems with this sparse superblocks. 6051 6052Fix bug where if /dev/null couldn't be opened (should never happen), 6053e2fsck would hang in a tight loop. 6054 6055Make e2fsck handle the case where /lost+found isn't a directory. 6056 6057E2fsck now uses mallinfo if it exists to get accurate statistics about 6058its memory usage. 6059 6060Fix bug in e2fsck where it wouldn't check to see if a disconnected 6061inode had any problems before connecting it to /lost+found. 6062 6063Add check to e2fsck so it makes sure that total number of inodes in 6064the filesystem is a sane number. 6065 6066Fix fencepost error when clearing an the end of the block bitmap which 6067caused the last block in the bitmap not to get cleared. 6068 6069Cleaned up a number of messages in e2fsck: 6070 * The message "Group's #'s copy of the group descriptor..." 6071 was fixed so that the correct number would be displayed. 6072 * Added missing space in the "disk write-protected" error messsage 6073 * Cleaned up the error message printed when a non-interactive 6074 e2fsck needs to abort a check because the filesystem 6075 appears to be mounted. 6076 6077Added a new command-line utility, uuidgen, which will create and print 6078a UUID. 6079 6080Make debugfs's icheck command more robust by checking to make sure an 6081inode has valid blocks before interarting over the inode's blocks. 6082 6083UUID generation now uses a random-based scheme whenever possible to 6084prevent potential privacy problems. 6085 6086Man pages for all of the UUID functions in the lirbary were added. 6087 6088Fixed bug in fsck so it won't coredump if a filesystem not in 6089/etc/fstab is given to it. 6090 6091Fsck now understands the UUID=xxxx and LABEL=yyyy forms in /etc/fstab 6092that most of the other mount utilities understands. 6093 6094Mke2fs will make a filesystem even if it appears mounted if the force 6095option is given. 6096 6097Dumpe2fs has new command-line options which allow a filesystem expert 6098to specify the superblock and blocksize when opening a filesystem. 6099This is mainly useful when examining the remains of a toasted 6100filesystem. 6101 6102The badblocks program has been updated to display correctly on disks 6103with large block numbers. 6104 6105The badblocks program no longer gives spurious errors when errors 6106occur on non-block boundaries, which is common if the blocksize is 6107larger than 1k. 6108 6109Mke2fs will sync the disk device every MKE2FS_SYNC block groups if the 6110MKE2FS_SYNC environment variable is set. This is to work around a VM 6111bug in the 2.0 kernel. I've heard a report that a RAID user was able 6112to trigger it even using a 2.2 kernel, but hopefully it will not be 6113needed for most Linux 2.2 users. 6114 6115Fixed miscellaneous documentation and man pages. 6116 6117Programmer's notes: 6118------------------- 6119 6120Cleaned up functions such as pass1_get_blocks, pass1_read_inode which 6121in e2fsck's pass1.c really should have been static. 6122 6123The return value of the uuid_compare() function was changed to make it 6124match with the convetions used by strcmp, memcmp, and Paul Leach's 6125UUID sample document. 6126 6127The "make depend" process has now been made more automated; it now 6128automatically word-wraps the dependencies, and only replaces source 6129Makefile.in if there has been a change in the dependencies. Also, a 6130top-level "make depend" now recurses through all the subdirectories 6131automatically. 6132 6133The Makefile in .../util has been changed so that subst is built using 6134the native C compiler during a cross-compilation, since the subst 6135program is only used during the build process. Also add an explicit 6136rule to build util/subst by cd'ing to the correct directory and 6137running Makefile. 6138 6139The man directories are defined in terms mandir, so that the configure 6140script can override the location of the manual pages. 6141 6142The config files have been updated to recognize new machine types for 6143both the i386 and alpha families. 6144 6145Fsck has been modified so that it will accurately create an 6146fsck_instance even when the noexecute flag is set. This allows for 6147accurate debugging of the fsck pass structure. Also, when the verbose 6148flag is given twice, fsck will print debugging information about when 6149fsck is waiting for jobs to finish. 6150 6151 6152E2fsprogs 1.14 (January 9, 1999) 6153================================ 6154 6155Fix the fstab parsing code so that it can handle blank lines and 6156comment characters. Also, missing pass numbers need to be treated as 6157zero. 6158 6159Fixed a bug in e2fsck where under some circumstances (when e2fsck 6160needs to restart processing after fixing an egregious inconsistency) 6161it would try to access already freed memory. 6162 6163E2fsck now prints non-printable characters in directory entries and 6164pathnames using '^' and 'M-' notation. 6165 6166Fixed chattr so that it will ignore symbolic links when doing 6167recursive descent traversals. For both chattr and lsattr, no longer 6168print the version string unless the -V option is given. 6169 6170Allow the system administrator to directly specify the number of 6171inodes desired in the filesystem, for some special cases where this is 6172necessary. 6173 6174Fix portability problems so that e2fsprogs can be compiled under Linux 61751.2 systems and Solaris systems. 6176 6177Update the config.guess file with a more recent version that will 6178identify newer Linux platforms. 6179 6180Programmer's notes 6181------------------ 6182 6183Ext2fs_read_inode and ext2fs_write_inode will now return an error if 6184an inode number of zero is passed to them. 6185 6186E2fsprogs 1.13 (December 15, 1998) 6187================================== 6188 6189Fixed a bug in debugfs where an error messages weren't getting printed 6190when the ext2 library routines to read inodes returned errors in the 6191stat, cmri and rm commands. 6192 6193Fixed a bug in mke2fs so that if a ridiculous inode ratio parameter is 6194provided, it won't create an inode table smaller than the minimum 6195number of inodes required for a proper ext2 filesystem. 6196 6197Fsck now parses the /etc/fstab file directly (instead of using 6198getmntent()), so that it can distinguish between a missing pass number 6199field and pass number field of zero. This caused problems for 6200diskless workstations where all of the filesystems in /etc/fstab have 6201an explicit pass number of zero, and fsck could not distinguish this 6202from a /etc/fstab file with missing pass numbers. 6203 6204E2fsck will create a /lost+found directory if there isn't one in the 6205filesystem, since it's safer to create the lost+found directory before 6206it's needed. 6207 6208Fixed e2fsck so that it would detect bogus immutable inodes which 6209happen to be sockets and FIFO files, and offer to clear them. 6210 6211If a filesystem has multiple reasons why it needs to be checked, and 6212one of the reasons is that it is uncleanly mounted, e2fsck will print 6213that as the reason why the filesystem is being checked. 6214 6215Cleaned up the output routines of mke2fs so that it doesn't overflow 6216an 80 column display when formating really big filesystems. 6217 6218Added a sanity check to e2fsck to make sure that file descriptors 0, 62191, 2 are open before opening the hard disk. This avoids a problem 6220where a broken program might exec e2fsck with those file descriptors 6221closed, which would cause disastrous results if the kernel returns a 6222file descriptor for the block device which is also used by FILE * 6223stdout. 6224 6225Fixed up the e2fsck progress reporting functions so that the values 6226reliably reach 100% at the completion of all of the e2fsck passes. 6227 6228Fixed minor documentation bugs in man pages and usage messages. 6229 6230Programmer's notes: 6231------------------- 6232 6233Fixed a number of lint warnings in the ext2fs library and potential 6234portability problems from other OS's header files that might define 6235CPP macros for names like "max" and "min". 6236 6237ext2fs_badblocks_list_add() has been made more efficient when it needs 6238to grow the bad blocks list. 6239 6240Fixed a bug in e2fsck which caused it to dereference a freed pointer 6241just before exiting. 6242 6243Fixed the substition process for generating the mk_cmds and compile_et 6244scripts so that they will work outside of the build tree. 6245 6246Add sanity check to e2fsck so that if an internal routine 6247(ext2fs_get_dir_info) returns NULL, avoid dereferencing the pointer 6248and causing a core dump. This should never happen, but... 6249 6250E2fsprogs 1.12 (July 9, 1998) 6251================================== 6252 6253E2fsprogs now works with glibc (at least with the version shipped wtih 6254RedHat 5.0). The ext2fs_llseek() function should now work even with 6255i386 ELF shared libraries and if llseek() is not present. We also 6256explicitly do a configure test to see if (a) llseek is in libc, and 6257(b) if llseek is declared in the system header files. (See standard 6258complaints about libc developers don't understand the concept of 6259compatibility with previous versions of libc.) 6260 6261The ext2fs library now writes out the block group number in each of 6262the superblock copies. This makes it easier to automatically 6263determine the starting block group of the filesystem when the block 6264group information is trashed. 6265 6266Added support for the EXT2_FEATURE_INCOMPAT_FILETYPE feature, 6267which means that e2fsprogs will ignore the high 8 bits of the 6268directory entry's name_len field, so that it can be used for other 6269purposes. 6270 6271Added support for the EXT2_FEATURE_RO_COMPAT_LARGE_FILE feature. 6272E2fsprogs will now support filesystems with 64-bit sized files. 6273 6274Added support for the EXT2_FEATURE_COMPAT_DIR_PREALLOC feature. 6275 6276Added new program "e2label", contributed by Andries Brouwer. E2label 6277provides an easy-to-use interface to modify the filesystem label. 6278 6279Fixed bug so that lsattr -v works instead of producing a core dump. 6280 6281Fixed a minor bug in mke2fs so that all groups with bad superblock 6282backup blocks are printed (not just the first one). 6283 6284Mke2fs will check the size of the device, and if the user specifies a 6285filesystem size larger than the apparent size of the device it will 6286print a warning message and ask if the user wants to proceed. 6287 6288E2fsck has a new option -C, which sends completion information to the 6289specified file descriptor. For the most part, this is intended for 6290programs to use, although -C 0 will print a spinning character to the 6291stdout device, which may be useful for users who want to see something 6292happening while e2fsck goes about its business. 6293 6294Fixed a bug in e2fsck which could cause a core dump when it needs to 6295expand the /lost+found directory, and sometimes the bitmaps haven't 6296been merged in. Also fixed a related bug where ext2fs_write_dir_block 6297was used to write out a non-directory block. (Which would be bad on a 6298non-Intel platform with byte swapping going on.) 6299 6300Fixed bug in e2fsck where it would print a "programming error" message 6301instead of correctly identifying where a bad block was in used when 6302the bad block was in a non-primary superblock or block group 6303descriptor. Also fixed a related bug when sparse superblocks are in 6304use and there is a bad block where a superblock or block group 6305descriptor would have been in a group that doesn't include a 6306superblock. 6307 6308Fixed a bug in e2fsck (really in libext2fs's dblist function) where if 6309the block group descriptor table is corrupt, it was possible to try to 6310allocate a huge array, fail, and then abort e2fsck. 6311ext2fs_get_num_dirs() now sanity checks the block group descriptor, 6312and subsitutes reasonable values if the descriptors are obviously bogus. 6313 6314If e2fsck finds a device file which has the immutable flag set and the 6315i_blocks beyond the normal device number are non-zero, e2fsck will 6316offer to remove it, since it's probably caused by garbage in the inode 6317table. 6318 6319When opening a filesystem, e2fsck specially checks for the EROFS error 6320code, and prints a specific error message to the user which is more 6321user friendly. 6322 6323If the filesystem revision is too high, change the e2fsck to print 6324that this is either because e2fsck is out of date, or because the 6325superblock is corrupt. 6326 6327E2fsck now checks for directories that have duplicate '.' and '..' 6328entries, and fixes this corruption. 6329 6330E2fsck no longer forces a sync of the filesystem (with attendant sleep 6331calls) at all times. The ext2fs_flush() function now performs a sync 6332only if it needed to write data blocks to disk. 6333 6334Fixed a minor bug in e2fsck's pass1b's file cloning function, where 6335certain errors would not be properly reported. 6336 6337Updated and expanded a few points in the man pages which users 6338complained wheren't explicit enough. 6339 6340Added special case byte-swapping code if compiling on the PowerPC, to 6341accomodate the strange big-endian variant of the ext2 filesystem that 6342was previously used on the PowerPC port. 6343 6344 6345Programmer's notes: 6346------------------- 6347 6348Removed C++ keywords from the ext2fs libraries so that it could be 6349compiled with C++. 6350 6351E2fsck's internal organization has now been massively reorganized so 6352that pass*.c don't have any printf statements. Instead, all problems 6353are reported through the fix_problem() abstraction interface. E2fsck 6354has also been revamped so that it can be called as a library from a 6355application. 6356 6357Added new fileio primitives in libext2fs for reading and writing 6358files on an unmounted ext2 filesystem. This interface is now used by 6359debugfs. 6360 6361Added a new libext2fs function for mapping logical block numbers of 6362a file to a physical block number. 6363 6364Added a new libext2fs function, ext2fs_alloc_block(), which allocates 6365a block, zeros it, and updates the filesystem accounting records 6366appropriately. 6367 6368Added a new libext2fs function, ext2fs_set_bitmap_padding(), which 6369sets the padding of the bitmap to be all one's. Used by e2fsck pass 5. 6370 6371The libext2fs functions now use a set of memory allocation wrapper 6372functions: ext2fs_get_mem, ext2fs_free_mem, and ext2fs_resize_mem, 6373instead of malloc, free, and resize. This makes it easier for us to 6374be ported to strange environments where malloc, et. al. aren't 6375necessarily available. 6376 6377Change the libext2fs fucntion to return ext2-specific error codes 6378(EXT2_DIR_EXISTS and EXT2_DB_NOT_FOUND, for example) instead of using 6379and depending on the existence of system error codes (such as EEXIST 6380and ENOENT). 6381 6382Renamed io.h to ext2_io.h to avoid collision with other OS's header 6383files. 6384 6385Add protection against ext2_io.h and ext2fs.h being included multiple 6386times. 6387 6388The types used for memory lengths, etc. have been made more portable. 6389In generla, the code has been made 16-bit safe. Added Mark 6390Habersack's contributed DOS disk i/o routines. 6391 6392Miscellaneous portability fixes, including not depending on char's 6393being signed. 6394 6395The io_channel structure has a new element, app_data, which is 6396initialized by the ext2fs routines to contain a copy of the filesystem 6397handle. 6398 6399ext2fs_check_directory()'s callback function may now return the error 6400EXT2_ET_CALLBACK_NOTHANDLED if it wishes ext2fs_check_directory() to 6401really do the checking, despite the presence of the callback function. 6402 6403 6404E2fsprosg 1.11 (June 17, 1997) 6405============================== 6406 6407Fixed e2fsck to detect (previously ignored) conflicts between the 6408superblock or block group descriptors and block bitmaps, inode 6409bitmaps, and inode tables. 6410 6411Fixed bug in e2fsck so that when the message printed out when a block 6412or inode bitmap conflicts with other data, it has the correct group 6413number. 6414 6415Fixed bug in e2fsck and mke2fs where the blocksize wasn't being passed 6416to badblocks. This meant that not all of the filesystem was being 6417tested for bad blocks! 6418 6419Fixed an array boundary overrun case which cropped up in 6420ext2fs_badblocks_list_test when a user tried running "mke2fs -c 6421-b 4096". 6422 6423Adjusted the number of columns printed by mke2fs when displaying the 6424superblock backups to avoid running over 80 columns when making a 6425really big filesystem. 6426 6427Fixed up the man pages for e2fsck, debugfs, badblocks, chattr, 6428dumpe2fs, fsck, mke2fs, and tune2fs (typos and other minor grammar 6429fixes), thanks to some suggestions from Bill Hawes (whawes@star.net). 6430 6431Programmer's notes: 6432------------------- 6433 6434Fixed install rule in lib/ss so that ss_err.h is actually getting 6435installed. 6436 6437Fixed bug in ext2fs_copy_bitmap; the destination bitmap wasn't getting 6438bassed back to the caller. 6439 6440Fixed bug in ext2fs_inode_scan_goto_blockgroup; it had not been 6441setting the current inode number (which meant this function wasn't 6442working at all). 6443 6444Fixed bug in ext2fs_resize_generic_bitmap; it had not be zeroing all 6445blocks in the bitmap when increasing the size of the bitmap. 6446 6447Changed the initial number of blocks allocated by ext2fs_init_dblist() 6448to be more realistic. 6449 6450Added a new function ext2fs_allocate_group_table, which sets up the 6451group descriptor information (and allocates inode and block bitmaps, 6452and inode tables for a particular group). The function was created by 6453factoring out code form ext2fs_allocate_tables(). 6454 6455Added a new function ext2fs_move_blocks which takes a bitmap of the 6456blocks to be moved, and moves them to another location on the 6457boardboard. 6458 6459Make the unix_io channel's io_channel_flush implementation calls sync() 6460to to flush the kernel buffers to disk. 6461 6462Added a new function ext2fs_dblist_count returns the number of 6463directory blocks in dblist. 6464 6465 6466E2fsprogs 1.10 (April 24, 1997) 6467=============================== 6468 6469Mke2fs once again defaults to creating revision #0 filesystems, since 6470people were complaining about breaking compatibility with 1.2 kernels. 6471Warning messages were added to the mke2fs and tune2fs man pages that 6472the sparse superblock option isn't supported by most kernels yet (1.2 6473and 2.0 both don't support parse superblocks.) 6474 6475Added new flag to mke2fs, -R <raid options>, which allows the user to 6476tell mke2fs about the RAID configuration of the filesystem. Currently 6477the only supported raid option is "stride" which specifies the width 6478of the RAID stripe. 6479 6480Fixed bug in e2fsck where pass1b would bomb out if there were any 6481blocks marked bad in the inode table. 6482 6483Fixed rare bug in mke2fs where if the user had a very unlucky number 6484of blocks in a filesystem (probability less than .002) the resulting 6485filesystem would be corrupt in the last block group. 6486 6487Fixed bug where if e2fsck tried to allocate a block to fix a 6488filesystem corruption problem and the filesystem had no free blocks, 6489ext2fs_new_block() would loop forever. 6490 6491The configure script now checks explicitly to see if "-static" works, 6492since that can't be assumed to be true --- RedHat doesn't install 6493libc-static by default. 6494 6495Fixed bug in libext2's block iterator functions where under some 6496cirmcustances, file with holes would cause the bcount parameter to the 6497callback function to be incorrect. This bug didn't affect any of 6498e2fsprogs programs, but it was discovered by Paul Mackerras, the 6499author of the PPC boot loader. 6500 6501Removed use of static variables to store the inode cache in libext2fs. 6502This caused problems if more than one filesystem was accessed via 6503libext2fs (static variables in libraries are generally a bad idea). 6504Again, this didn't affect e2fsprogs programs, but it was discovered by 6505Paul Mackerras. 6506 6507Fixed minor bugs and version code drift to assure that e2fsprogs 1.10 6508will compile cleanly with 1.2.13 kernels (even with a.out shared 6509libraries!) 6510 6511Programmer's notes: 6512------------------- 6513 6514Added new functions to duplicate an ext2 filesystem handle, and its 6515associated substructure. New functions: ext2fs_dup_handle(), 6516ext2fs_copy_dblist(), ext2fs_badblocks_copy(), ext2fs_copy_bitmap(). 6517Other structures, such as the io_channel and the inode_cache, now have 6518a ref count so that they only get freed when they are no longer used 6519by any filesystem handle. (These functions were added as part of the 6520development effort for an ext2 resizer). 6521 6522E2fsprogs 1.09 (April 14, 1997) 6523=============================== 6524 6525Fixed bug in mke2fs (really in lib/ext2fs/initialize.c) which was 6526accidentally introduced in the 1.08 release. The overhead calculation 6527was accidentally removed, which caused ext2fs_initialize() to not 6528notice when the filesystem size needed to be adjusted down because 6529there wasn't enough space in the last block group. 6530 6531Fixed bug in version parsing library routine; it was always parsing 6532the library version string, instead of using the passed-in string. 6533 6534Clarified chattr man page. 6535 6536E2fsprogs 1.08 (April 10, 1997) 6537=============================== 6538 6539E2fsck 1.07 was very slow when checking very large filesystems with a 6540lot of files that had hard links (i.e., news spools). This was fixed 6541by seriously revamping the icount abstraction. Added a formal test 6542suite for the icount abstraction. 6543 6544Debugfs now has a "-l" option to the "ls" command, which lists the 6545inode number, permissions, owner, group, size, and name of the files 6546in the directory. 6547 6548Fix a bug in e2fsck where when a directory had its blocks moved to 6549another location during the pass 1b processing, the directory block 6550list wasn't updated, so pass 2 wouldn't check (and correct) the 6551correct directory block. 6552 6553E2fsck will now treat inodes which contain blocks which are claimed by 6554the filesystem metadata by treating them as multiply claimed blocks. 6555This way, the data in those blocks can be copied to a new block during 6556the pass 1b--1d processing. 6557 6558E2fsck will attempt to determine the correct superblock number and 6559display it in the diagnostic and warning messages if possible. 6560 6561Add support for a new (incompatible) feature, "sparse_super". This 6562feature reduces the number of blocks which contain copies of backup 6563superblocks and block group descriptors. (It is only an incompatible 6564feature because of a bug in ext2_free_blocks.) mke2fs and tune2fs now 6565support a new -s option; e2fsck will recognize filesystems built with 6566this feature turned on. 6567 6568E2fsck now checks the library to make sure is the correct version, 6569using new library functions. (This helps to diagnose incorrectly 6570installed e2fsprogs distributions.) 6571 6572Dumpe2fs now prints more information; its now prints the the 6573filesystem revision number, the filesystem sparse_super feature (if 6574present), the block ranges for each block group, and the offset from 6575the beginning of the block group. 6576 6577Mke2fs now distributes the inode and block bitmap blok so that the 6578won't be concentrated in one or two disks in RAID/striping setups. 6579Also, if the user chooses a 2k or 4k block group, mke2fs will try to 6580choose the largest blocks per group that be chosen. (For 2k blocks, 6581you can have up to 16384 blocks/group; for 4k blocks, you can have up 6582to 32768 blocks/group.) Previously mke2fs would not allow 6583specification of more than 8192 blocks per group, even if you were 6584using a 2k or 4k block group. 6585 6586Programmer's notes: 6587------------------- 6588 6589Added a new function ext2fs_create_icount2() which takes a "hint" 6590argument. This hint argument presets the icount array with the list 6591of inodes which actually need to be in the icount array. This really 6592helps to speed up e2fsck. 6593 6594Added a new function ext2fs_icount_validate() which checks the rep 6595invariant for the icount structure. This is used mostly for testing. 6596 6597The error mesasage given when a bad inode number is passed to 6598test_generic_bitmap to reflect EXT2FS_TEST_ERROR (instead of 6599EXT2FS_UNMARK_ERROR). 6600 6601Added a new function ext2fs_set_dir_block which sets the block of a 6602dblist entry, given the directory inode and blockcnt. 6603 6604Added a new function ext2fs_get_library_version() which returns the 6605current library version, and ext2fs_parse_version_string() which 6606returns a version number based on a e2fsprogs version string. 6607 6608The icount functions will return EINVAL if the passed in inode number 6609is out of bounds. 6610 6611E2fsprogs 1.07 (March 9, 1997) 6612============================== 6613 6614E2fsck is now uses much less memory when checking really large 6615filesystems (or rather, filesystems with a large number of inodes). 6616Previously a filesystem with 1 million inodes required 4 megabytes of 6617memory to store inode count statistics; that storage requirement has 6618now been reduced to roughly half a megabyte. 6619 6620E2fsck can now properly deal with bad blocks appearing inside the 6621inode table. Instead of trying to relocate the inode table (which 6622often failed because there wasn't enough space), the inodes in the bad 6623block are marked as in use. 6624 6625E2fsck will automatically try to use the backup superblocks if the 6626primary superblocks have a bad magic number or have missing meta-data 6627blocks (or meta-data blocks which are out of range). 6628 6629E2fsck's pass 3 has been made more efficient; most noticeable on 6630filesystems with a very large number of directories. 6631 6632Completely revamped e2fsck's system of printing problem reports. It 6633is now table driven, to make them more easily customizeable and 6634extendable. Error messages which can be printed out during preen mode 6635are now one line long. 6636 6637Fixed e2fsck's filesystem swapping code so that it won't try to swap 6638fast symbolic links or deleted files. 6639 6640Fixed e2fsck core dumping when fixing a filesystem which has no 6641directories (not even a root directory). 6642 6643Added a check to e2fsck to make sure that the length of every 6644directory entry is a multiple of 4 (since the kernel complains if it 6645isn't). 6646 6647Added a check to e2fsck to make sure that a directory entry isn't a 6648link to the root directory, since that isn't allowed. 6649 6650Added a check to e2fsk to now make sure the '.' and '..' directory 6651entries are null terminated, since the 2.0 kernel requires it. 6652 6653Added check to write_bitmaps() to make sure the superblock doesn't get 6654trashed if the inode or block bitmap is marked as being block zero. 6655 6656Added checking of the new feature set fields in the superblock, to 6657avoid dealing with new filesystem features that this package wasn't 6658set up to handle. 6659 6660Fixed a fencepost error in ext2fs_new_block() which would occasionally 6661try to allocate a block beyond the end of a filesystem. 6662 6663When the UUID library picks a random IEEE 802 address (because it 6664can't find one from a network card), it sets the multicast bit, to 6665avoid conflicting with a legitimate IEEE 802 address. 6666 6667Mke2fs now sets the root directory's owner to be the real uid of the 6668user running mke2fs. If the real uid is non-zero, it also sets 6669the group ownership of the root directory to be the real group-id of 6670the user running mke2fs. 6671 6672Mke2fs now has more intelligent error checking when it is given a 6673non-existent device. 6674 6675When badblocks is given the -vv option, it now updates the block that 6676it is currently testing on every block. 6677 6678Fixed a bug in fsck where it wouldn't modify the PATH envirnoment 6679currently correctly if PATH wasn't already set. 6680 6681Shared libraries now built with dependencies. This allows the shared 6682library files to be used with dlopen(); it also makes the transition 6683to libc 6 easier, since ld.so can tell which libc a particular shared 6684library expects to use. 6685 6686Programmer's notes: 6687------------------- 6688 6689Added new abstraction (defined in dblist.c) for maintaining a list of 6690blocks which belongs to directories. This is used in e2fsck and other 6691programs which need to iterate over all directories. 6692 6693Added new functions which test to see if a contiguous range of blocks 6694(or inodes) are available. (ext2fs_*_bitmap_range). 6695 6696Added new function (ext2_inode_has_valid_blocks) which returns true if 6697an inode has valid blocks. (moved from e2fsck code). 6698 6699Added new function (ext2fs_allocate_tables) which allocates the 6700meta-data blocks as part of initializing a filesystem. (moved from 6701mke2fs code). 6702 6703Added a new I/O manager for testing purposes. It will either allow a 6704program to intercept I/O requests, or print debugging messages to 6705trace the activity of a program using the I/O manager. 6706 6707The badblocks_list functions now store the bad blocks in a sorted 6708order, and use a binary search to speed up badblocks_list_test. 6709 6710The inode scan function ext2fs_get_next_inode() may now return a soft 6711error returns: MISSING_INODE_TABLE and BAD_BLOCK_IN_INODE_TABLE in 6712those cases where part of an inode table is missing or there is a bad 6713block in the inode table. 6714 6715Added a new function (ext2fs_block_iterate2) which adds new arguments to 6716the callback function to return a pointer (block and offset) to the 6717reference of the block. 6718 6719Added new function (ext2fs_inode_scan_goto_blockgroup) which allows an 6720application to jump to a particular block group while doing an inode 6721scan. 6722 6723The badblocks list functions were renamed from badblocks_* to 6724ext2fs_badblocks_*. Backwards compatibility functions are available 6725for now, but programs should be modified to use the new interface. 6726 6727Some of the library functions were reorganized into separate files to 6728reduce the size of some programs which statically link against the 6729ext2 library. 6730 6731Put in some miscellaneous fixes for the Alpha platform. 6732 6733 6734E2fsprogs 1.06 (October 7, 1996) 6735================================ 6736 6737Fixed serious bug in e2fsck: if the block descriptors are bad, don't 6738smash the backup copies in ext2fs_close(). (The problem was that when 6739e2fsck -p discovered the problem, while it was closing the filesystem 6740and exiting, it was also blowing away the backup superblocks on the 6741disk, which was less than friendly.) We now make it the case that we 6742only write out the backup superblock and the back block descriptors if 6743the filesystem is completely free from problems. 6744 6745Fixed a bug in block_interate in the lib/ext2fs library which caused 6746e2fsck to fail on GNU Hurd-created filesystems. 6747 6748Add support for Linux/FT's bootloader, which actually uses 6749EXT2_BOOT_LOADER, and sets its mode bits which caused e2fsck to want 6750to clear the inode. 6751 6752Add support for the "A" (no atime update) attribute. (Note: this 6753attribute is not yet in production kernels.) 6754 6755The test suite is not automatically run when doing a "make all" from 6756the top level directory. Users should manually run "make check" if 6757they wish to run the test suite. 6758 6759Upon a preenhalt(), make the printed message more explicit that 6760running e2fsck "MANAULLY" means without the -p or -a options. 6761 6762In e2fsck, if a disconnected inode is zero-length, offer to clear it 6763instead of offering to connect it to lost+found. 6764 6765In e2fsck, if a filesystem was just unmounted uncleanly, and needs 6766e2fsck to be run over it, change e2fsck to explicitly display this 6767fact. 6768 6769For dumpe2fs and e2fsck, cause the -V option to print out which 6770version of the ext2fs library is actually getting used. (This will 6771help detect mismatches of using a 1.06 utility with a 1.05 library, 6772etc.) 6773 6774Programmers' notes: 6775------------------- 6776 6777EXT2_SWAP_BYTES was changed to EXT2_FLAG_SWAP_BYTES, which better fits 6778the naming convention. 6779 6780In ext2fs_initialize(), make sure the description for the inode bitmap 6781is correctly initialize. 6782 6783Fixed minor type typo in ext2fs_allocate_generic_bitmap(); 6784 6785E2fsprogs 1.05 (September 7, 1996) 6786================================== 6787 6788Add support for new fields in the ext2 superblock --- volume name, 6789volume UUID, and last mounted field. Dumpe2fs displays these fields, 6790tune2fs and mke2fs allows you to set them. E2fsck will automatically 6791generate a UUID for those volumes that don't have them. 6792 6793Put in support for e2fsck to recognize HURD specific ext2 features --- 6794most notably, the translator block. The e2fsprogs tools will now use 6795the creator_os field in the superblock to correctly handle different 6796OS-specific variants of the ext2 filesystem. 6797 6798E2fsck now fixes inodes which have a the deletion time set, but which 6799have a non-zero i_link_count field by offering to clear the deletion 6800time. Previously e2fsck assumed that the inode was deleted (per 0.3c 6801ext2 kernel behavior) and offered to unlink the file. 6802 6803If e2fsck sets the clean bit, but nothing else, set the exit code 6804FSCK_NONDESTRUCT. After all, e2fsck did fix a filesystem error --- it 6805set the filesystem valid bit when it was previously cleared. :-) This 6806was needed to make the HURD fsck driver happy. 6807 6808If the user refuses to attach an unattached inode, e2fsck will no 6809longer set the inode's link count. Otherwise, the inode would end up 6810getting marked as unused, which might cause loss of data later. 6811 6812Make the message issued by e2fsck when the superblock is corrupt less 6813confusing for users. It now mentions that another reason for the 6814"corrupt superblock" message might be that the partition might not be 6815an ext2 filesystem at all (it might swap, msdos filesystem, ufs, etc.) 6816 6817Make the libext2 library more robuest so that e2fsck won't coredump on 6818an illegal superblock where the blocksize is zero. (f_crashdisk is 6819the test case). 6820 6821By default, create filesystems where the default checkinterval is 6 6822months (180 days). Linux servers can be robust enough that 20 reboots 6823can be a long, long time. 6824 6825Added configure flag --enable-old-bitops, which forces the bitops to 6826use the old (native) bitmask operations. By default on the sparc 6827platform, the standard ext2 bit ordering is now used. 6828 6829Added a new feature to e2fsck to byte-swap filesystems; this can be 6830used to convert old m68k filesystems to use the standard byte-order 6831storage for the superblock, inodes, and directory blocks. This 6832function is invoked by using the '-s' option to e2fsck. 6833 6834Debugfs's "dump" command has been enhanced so that it writes out the 6835exact size of the file so that the nulls at the end of the file are 6836eliminated. The command also accept a new "-p" option which will 6837attempt preserve to preserve the ownernship, permissions, and 6838file modification/access times. 6839 6840Debugfs has two new options, -f and -R. The -R option allows the user 6841to execute a single debugfs command from the command line. The -f 6842option allows the user to specify a "command file" containing debugfs 6843commands which will get executed. 6844 6845Dumpe2fs now pretty prints the check interval, instead of just 6846printing the check interval as a number of seconds. 6847 6848Fix bugs in debugfs: the params command when no filesystem is opened 6849no longer causes a core dump. It is now possible to unlink a file 6850when a pathame containing a '/' is specified. 6851 6852Tune2fs has a new -C option which sets the number of times the 6853filesystem has been mounted. 6854 6855Fix the chattr '-v' option so that it actually works. Chattr was 6856being buggy about the -v option parsing. 6857 6858Programmers' notes: 6859------------------- 6860 6861The directory lib/uuid contains a set of library routines to generate 6862DCE compatible UUIDs. 6863 6864Extended ext2fs_namei() to handle symbolic links. Added new function 6865ext2fs_nami_follow() which will follow last symbolic link in the case 6866where the pathname points to a sym link. 6867 6868The ext2fs_block_iterate function will now return the HURD translator 6869block, if present. The new flag BLOCK_FLAG_DATA_ONLY will cause the 6870iterator to return data blocks only. The ext2fs.h file now defines 6871constants BLOCK_COUNT_IND, BLOCK_COUNT_DIND, BLOCK_COUNT_TIND, and 6872BLOCK_COUNT_TRANSLATOR, which are the magic values passed in the block 6873count field of the iterator callback function. 6874 6875The test script driver now takes an optional second argument, which is 6876the test case to be run. This allows you to run a test case without 6877needing to run the entire test suite. 6878 6879On Linux ELF systems, install the .so files in the correct places 6880(/usr/lib). The .so files must be stored in the same directory as the 6881.a files. 6882 6883Fixed miscellaneous HURD compilation issues with header file being 6884included in the right order. 6885 6886Fixed debugfs so that it resets optind to zero, not one, since setting 6887optind to zero is more correct. 6888 6889 6890E2fsprogs 1.04 (May 16, 1996) 6891============================= 6892 6893First "official" (1.03 was a limited release only) to support building 6894e2fsprogs under Linux 2.0 kernels (as well as late model 1.3 and 1.99 6895kernels). 6896 6897This package includes a RPM specs file, that it can be built using the 6898RedHat Package Manager. 6899 6900E2fsck now prints a hint that if there are lots of incorrectly located 6901inode bitmaps, block bitmaps, and inode table blocks, the user might 6902want to try using e2fsck -b 8193 first, to see if that fares any 6903better. 6904 6905For ext2 filesystem written with the hurd, debugfs will now print out 6906the translator field when printing an inode structure. 6907 6908Lots of miscellaneous linking/installation cleanups: 6909 6910 Libraries are now linked using a relative pathname, instead of 6911 relying on -L working correct. It doesn't, in many cases, including 6912 current versions of GNU ld. This guarantees that the build tree is 6913 linking with the right libraries, instead of the ones installed in 6914 /usr/lib. 6915 6916 Header files, man pages, and the et/ss shell scripts are now 6917 generated using a custom substitution script, instead of relying on 6918 the configure script. This prevents needless recompilation of 6919 files; in addition, the custom substitution script is much faster. 6920 6921 e2fsck may now be linked dynamically, by using the 6922 --enable-dynamic-e2fsck flag to configure. This is not recommended, 6923 since it increases e2fsck's dependence on other files, but some 6924 people need to save disk space, and other critical programs on their 6925 systems were being linked dynamically anyway. 6926 6927 Programs such as fsck which didn't need to be linked against 6928 libext2fs (or mke2fs which didn't need to be linked against libe2p) 6929 only link against libraries they actually need. Otherwise, those 6930 programs would require the presense of libraries that otherwise 6931 could be removed from a rescuse diskette. 6932 6933 The ss include files are now installed correctly so they can 6934 actually be used by another package. 6935 6936 If the profiling libraries are built, they are now installed on a 6937 "make install-libs". 6938 6939 6940E2fsprogs 1.03 (March 27, 1996) 6941=============================== 6942 6943Change the m68k bit numbering for bitmasks to match the bit numbering 6944used by all other ext2 implementations. (This change was requested by 6945the m68k kernel development team.) 6946 6947Support (in-development) filesystem format revision which supports 6948(among other things) dynamically sized inodes. 6949 6950Fixed a bug in the ext2 library so that an intelligent error is 6951returned if mke2fs is run with a ridiculously small number of blocks 6952for a partition. 6953 6954Fixed a bug in the ext2 library which required that the device be 6955openable in read/write mode in order to determine its size. This 6956caused e2fsck -n to require read/write access when it was not 6957previously necessary. 6958 6959Fixed a bug in e2fsck which casued it to occasionally fail the test 6960suite depending on which version of the floating point library it was 6961using. 6962 6963Fixed a bug in e2fsck so that it now halts with a fatal error when 6964certain superblock consistency checks fail. Previously it continued 6965running e2fsck, with some potential confusing/damaging consequences. 6966 6967Added new flag to fsck which allows the root to be checked in parallel 6968with other filesytems. This is not the safest thing in the world to 6969do, but some system administrators really wanted it. 6970 6971Fixed -Wall flames in lib/ss. 6972 6973 6974E2fsprogs 1.02 (January 16, 1996) 6975================================= 6976 6977Fix to allow e2fsprogs to be compiled on recent 1.3 (pl45+) kernels. 6978 6979Change e2fsck to print statistics of how many non-contiguous files are 6980on the system. Note that a file which is larger than 8k blocks, it is 6981guaranteed to be non-contiguous. 6982 6983In mke2fs, print a warning message if a user tries to format a whole 6984disk (/dev/hda versus /dev/hda1). If a user really wants to format a 6985whole disk, the -F (force) option forces mke2fs to format a whole disk 6986as a filesytem. 6987 6988Fix a bug in fsck where in some cases it might start checking 6989partitions in the next pass before it finishes checking partitions in 6990the current pass. This still won't cause two partitions on the same 6991disk will be checked, so it's rarely a problem in real life. 6992 6993Patch lsattr so that it won't hang when checking a named pipe. 6994 6995Minor compilation fixes: 6996 * Fix the order of libraries that were linked in debugfs. 6997 * Allow the sources to be compiled with -ansi turned on. 6998