1E2fsprogs 1.41.14 (December 22, 2010) 2===================================== 3 4Fix spurious complaint in mke2fs where it would complain if the file 5system type "default" is not defined in mke2fs.conf. 6 7The resize2fs program will no longer clear the resize_inode feature 8when the number reserved group descriptor blocks reaches zero. This 9allows for subsequent shrinks of the file system to work cleanly for 10flex_bg file systems. 11 12The resize2fs program now handles devices which are exactly 16T; 13previously it would give an error saying that the file system was too 14big. 15 16E2fsck (and the libext2fs library) will not use the extended rec_len 17encoding for file systems whose block size is less than 64k, for 18consistency with the kernel. 19 20Programming notes 21----------------- 22 23E2fsprogs 1.41.13 would not compile on big-endian systems. This has 24been fixed. (Addresses Sourceforge Bug: #3138115) 25 26The ext2fs_block_iterator2() function passed an incorrect ref_offset 27to its callback function in the case of sparse files. (Addresses 28Sourceforge Bug: #3081087) 29 30Fix some type-punning warnings generated by newer versions of gcc. 31 32 33E2fsprogs 1.41.13 (December 13, 2010) 34===================================== 35 36E2fsck now supports the extended option "-E journal_only", which 37causes it to only do a journal replay. This is useful for scripts 38that want to first replay the journal and then check to see if it 39contains errors. 40 41E2fsck will now support UUID= and LABEL= specifiers for the -j option 42(which specifies where to find the external journal). (Addresses 43Debian Bug #559315) 44 45E2fsck now has support for the problems/<problem code>/force_no 46configuration option in e2fsck.conf, which forces a problem to not be 47fixed. 48 49Dumpe2fs will now avoid printing large negative offsets for the bitmap 50blocks and instead print a message which is a bit more helpful for 51flex_bg file systems. 52 53Mke2fs will now check the file system type (specified with the -t 54option) to make sure it is defined in the mke2fs.conf file; if it is 55not, it will print an error and abort. If the usage type (specified 56with the -T option) is not defined in mke2fs.conf, mke2fs will print a 57warning but will continue. (Addresses Debian Bug #594609) 58 59Clarified error message from resize2fs clarifying that on-line 60shrinking is not supported at all. (Addresses Debian Bug #599786) 61 62Fix an e2fsck bug that could cause a PROGRAMMING BUG error to be 63displayed. (Addresses Debian Bug #555456) 64 65E2fsck will open the external journal in exclusive mode, to prevent 66the journal from getting truncated while it is in use due to a user 67accidentally trying to run e2fsck on a snapshotted file system volume. 68(Addresses Debian Bug #587531) 69 70Fix a bug in e2fsck so it has the correct test for the EOFBLOCKS_FL 71flag. 72 73The tune2fs program can now set the uninit_bg feature without 74requiring an fsck. 75 76The tune2fs, dumpe2fs, and debugfs programs now support the new ext4 77default mount options settings which were added in 2.6.35. 78 79The e2fsck and dumpe2fs programs now support the new ext4 superblock 80fields which track where and when the first and most recent file 81system errors occurred. These fields are displayed by dumpe2fs and 82cleared by e2fsck. These new superblock fields were added in 2.6.36. 83 84Debugfs now uses a more concise format for listing extents in its 85stat command. This format also includes the interior extent tree 86blocks, which previously was missing from stat's output for 87extent-based files. 88 89Debugfs has a new option, -D, which will request Direct I/O access of 90the file system. 91 92Mke2fs will skip initializing the inode table if a device supports 93discard and the discard operation will result in zero'ed blocks. 94 95Badblocks will now correctly backspace over UTF-8 characters when 96displaying its progress bar. (Addresses Gentoo Bug #309909; Addresses 97Debian Bugs #583782 and #587834) 98 99E2freefrag will now display the total number of free extents. 100 101Resize2fs -P no longer requires a freshly checked filesystem before 102printing the minimum resize size. 103 104Fixed a floating point precision error in a binary tree search routine 105that can lead to seg fault in e2fsck and resize2fs. 106 107Fixed a bug in e2fsck where if both the original and backup superblock 108are invalid in some way, e2fsck will fail going back to the original 109superblock because it didn't close the backup superblock first, and 110the exclusive open prevented the file system from being reopened. 111 112Fixed a big in e2freefrag which caused getopt parsing to fail on 113architectures with unsigned chars. (Addresses Gentoo Bug: #299386) 114 115Clarified an mke2fs error message so a missed common in an -E option 116(i.e., mke2fs -t ext4 -E stride=128 stripe-width=512 /dev/sda1") 117results in a more understandable explanation to the user. 118 119Mke2fs now displays the correct valid inode ratio range when 120complaining about an invalid inode ratio specified by the user. 121 122Mke2fs now understands the extended option "discard" and "nodiscard", 123and the older option -K is deprecated. The default of whether 124discards are enabled by default can be controlled by the mke2fs.conf 125file. 126 127Mke2fs's handling of logical and physical sector sizes has been 128improved to reflect the fact that there will be some SSD's with 8k and 12916k physical sectors arriving soon. Mke2fs will no longer force block 130size to be the physical sector size, since there will be devices where 131the physical sector size is larger than the system's page size, and 132hence larger than the maximal supported block size. In addition, if 133the minimal and optimal io size are not exported by the device, and 134the physical sector size is larger than the block size, the physical 135sector size will be used to set the Raid I/O optimization hints in the 136superblock. 137 138E2fsck will now display a better, more specific error message when the 139user enters a typo'ed device name, instead of blathering on about 140alternate superblocks. 141 142Fixed various Debian Packaging Issues 143 144Updated/clarified man pages (Addresses Debian Bugs: #580236, #594004, 145#589345, #591083; Addresses Launchpad Bug: #505719) 146 147Update the Chinese, Chzech, Dutch, French, Germany, Indonesian, 148Polish, Swedish, and Vietnamese translations. 149 150 151Programmer's Notes 152------------------ 153 154Fix a dependency definition for the static and profiled blkid 155libraries which could cause compile failures in some configurations. 156(Addresses Debian Bug: #604629) 157 158Add support for Direct I/O in the Unix I/O access layer. 159 160Fixed a memory leak in the Unix I/O layer when changing block sizes. 161 162Fixed minor memory leaks in mke2fs. 163 164Added a new function to the ext2fs library, ext2fs_get_memalign(). 165 166The tst_super_size test program will check to make sure the superblock 167fields are correctly aligned and will print them out so they can be 168manually checked for correctness. 169 170Fixed some makefile dependencies for test programs in lib/ext2fs. 171 172Reserved the feature flags and superblock fields needed for the Next3 173snapshot feature. 174 175Reserved the feature flags for EXT4_FEATURE_INCOMPAT_DIRDATA and 176EXT4_INCOMPAT_EA_INODE. 177 178 179E2fsprogs 1.41.12 (May 17, 2010) 180================================ 181 182Mke2fs now gives a correct error message if the external journal 183device is not found. (Addresses Red Hat Bug #572935) 184 185Resize2fs -P will now refuse to print a minimum size if the file 186system is not clean. Previously it would go ahead and print a minimum 187size anyway, which might not be correct, leading to user confusion. 188 189E2fsck now tests for extents that begin at physical block 0 and 190rejects them as invalid. (Addresses Google Bug: #2573806) 191 192Fixed a bug in e2fsck which could cause it to crash when trying to 193remove an invalid extent and the block bitmaps hadn't yet been loaded. 194(Addresses SourceForge Bug: #2971800) 195 196E2fsck now will completely skip time-based checks if the system clock 197looks insane or the option broken_system_clock is set in 198/etc/e2fsck.conf. 199 200E2fsck would previously report an i_blocks corruption for a 4T file 201created using posix_fallocate; this bug has been fixed. 202 203E2fsck will now correctly mark a sparse journal as invalid and will 204delete and recreate the journal to address the problem. 205 206E2fsck would previously incorrectly ask the user whether she would 207like to abort the file system check after finding a problem --- and 208then abort regardless of the user's answer. This is annoying, and 209has been fixed. 210 211E2fsck can now continue even if it fails to recreate the resize 212inode; previously it would just abort the file system check 213altogether. 214 215E2fsck could potentially remove directory entries for inodes found in 216the unused region of the inode table; this would generally happen on 217ext4 file systems that do not use journalling. This bug has been fixed 218by not clearing these directory entries once it has been established 219that bg_unused_inodes may not be trustworthy; once pass #2 has been 220completed, e2fsck will restart the file system check from the 221beginning, and then it will be safe to delete any directory entries 222pointing to inodes that appear to be deleted. (Addresses Google Bug: 223#2642165) 224 225E2fsck will not try to set the block group checksums if the user 226cancels the fsck with a control-C. It's a bad idea to set the 227checksums if e2fsck hasn't been completed, and it often results an the 228error message, "Inode bitmap not loaded while setting block group 229checksum info". (Addresses Launchpad Bug: #582035) 230 231The mke2fs program now queries the kernel for the physical as well as 232the logical sector size, and will not allow a blocksize below the 233logical, and will strongly encourage a blocksize at least as big as 234the physical blocksize. This is needed for 4k sector drives that 235emulate 512 byte sector sizes. 236 237Mke2fs will now allow a flex_bg size of 1. This is unusual, and 238rarely needed, but it is a legal value. 239 240E2fsck will check for cases where the EOFBLOCKS_FL is set when it is 241not needed, and offer to clear it; this is a sign of a kernel bug, but 242more importantly, some released kernels may crash when this situation 243is encountered on ext4 file systems. (Addresses Google Bug: #2604224) 244 245E2fsck will use the EOFBLOCKS_FL flag exclusively to check whether 246i_size is correct. (Kernels starting with 2.6.34 will set 247EOFBLOCKS_FL.) 248 249The com_err library will now only output ^M (a CR character) when the 250tty is in raw mode. 251 252Update the Czech, Chinese, Dutch, French, Germany, Indonesian, Polish, 253and Vietnamese translations. 254 255Fixed various Debian packaging issues --- see debian/changelog for 256details. (Addresses Debian Bugs: #571247, #563487) 257 258 259Programmer's Notes 260------------------ 261 262The regression test suite now uses its own mke2fs.conf file, so that 263downstream distributions want change the mke2fs.conf file which is 264distributed in the RPM or dpkg file, without worrying about screwing 265up the regression test results. 266 267Always build namei.o so that building with configure --disable-debugfs 268works correctly. Long-term, if we care about reduced e2fsprogs 269builds, we need a more general solution for deciding what .o files are 270needed for a particular build. Given that install floppies are going 271(gone?) the way the dodo bird, we probably don't care, though. 272(Addresses Sourceforge Bug: #2911433) 273 274Add configure options --enable-symlink-build and 275--enable-symlink-install, which allow e2fsprogs be built using 276symlinks instead of hard links, and to be installed using symlinks 277instead of hard links, respectively. It is useful when the file 278system where the build is taking place, or the file system where 279e2fsprogs is installed, can't handle hard links for some reason. 280(Addresses Sourceforge Bug: #1436294) 281 282Fixed compile warning in mke2fs.c. 283 284 285E2fsprogs 1.41.11 (March 14, 2010) 286================================== 287 288E2fsck will no longer give a fatal error and abort if the physical 289device has been resized beyond 2**32 blocks. (Addresses Launchpad 290Bug: #521648) 291 292Debugfs has a bug fixed so that "logdump -b <blk>" now properly shows 293the allocation status of the block <blk>. (Addresses Debian Bug: 294#564084) 295 296E2fsck now prints a much more emphatic and hopefully scary message 297when a file system is detected as mounted while doing a read/write 298check of the filesystem. Hopefully this will dissuade users from 299thinking, "surely that message doesn't apply to *me*" :-( 300 301E2fsck -n will now always open the file system read-only. We now 302disallow certain combination of options which previously were manual 303exceptions; this is bad because it causes users to think they are 304smarter than they really are. So "-n -c", "-n -l", "-n -L", and "-n 305-D" are no longer supported. (Addresses Launchpad Bug: #537483) 306 307In e2fsprogs 1.41.10, mke2fs would ask for confirmation to proceed if 308it detected a badly aligned partition. Unfortunately, this broke some 309distribution installation scripts, so it now just prints the warning 310message and proceeds. (Addresses Red Hat Bug: #569021. Addresses 311Launchpad Bug: #530071) 312 313Mke2fs would take a long time to create very large journal files for 314ext4. This was caused by a bug in ext2fs_block_iterate2(), which is 315now fixed. 316 317E2fsck now understands the EOFBLOCKS_FL flag which will be used in 3182.6.34 kernels to make e2fsck not complain about blocks deliberately 319fallocated() beyond an inode's i_size. 320 321E2fsprogs 1.41.10 introduced a regression (in commit b71e018) where 322e2fsck -fD can corrupt non-indexed directories when are exists one or 323more file names which alphabetically sort before ".". This can happen 324with ext2 filesystems or for small directories (take less than a lock) 325which contain filenames that begin with a space or some other 326punctuation mark. (Addresses Debian Bug: #573923, Addresses Launchpad 327Bug: #525114) 328 329 330Programmer's Notes 331------------------ 332 333Add new test, f_rehash_dir, which checks to make sure e2fsck -D works 334correctly. 335 336The libcom_err function now has support for Heimdal's com_right_r 337function(). (Addresses Sourceforge Bug: #2963865, Addresses Debian 338Bug: #558910) 339 340 341E2fsprogs 1.41.10 (February 7, 2010) 342==================================== 343 344Fix resize2fs bug which causes it to access invalid memory. 345 346Add libss support for libreadline.so.6. 347 348Fix e2fsck's check for extent-mapped directory with an incorrect file 349type. 350 351Add new e2fsck.conf configuration option, default/broken_system_clock 352to support systems with broken CMOS hardware clocks. Also, since too 353many distributions seem to have broken virtualization scripts now, 354e2fsck will by default accept dates which are off by up to 24 hours by 355default. (Addresses Debian Bugs: #559776, #557636) 356 357Fix a bug where mke2fs may not use the best placement of the inode 358table when there is only room for a single block group in the last 359flex_bg. 360 361E2fsck is now smarter when it needs to allocate blocks in the course 362of fixing file system problems. This reduces the number of spurious 363differences found in pass #5. 364 365E2fsck will no longer rehash directories which fit in a single 366directory block. 367 368E2fsck now correctly handles holes in extent-mapped directories (i.e., 369sparse directories which use extents). 370 371Fix big-endian problems with ext2fs_bmap() and ext2fs_bmap2(). 372 373Fix a bug in filefrag where on platforms which can allow file systems 374with 8k blocks, that it doesn't core dump when it sees a file system 375with 8k block sizes. (Thanks to Mikulas Patocka for pointing this 376out.) 377 378E2fsck will correctly fix directories that are have an inaccurate 379i_size as well as other problems in a single pass, instead of 380requiring two e2fsck runs before the file system is fully fixed. 381 382Fix e2fsck so it will correctly find and detect duplicate directory 383entries for non-indexed directories. ( Addresses Sourceforge Bug: 384#2862551) 385 386Mke2fs will use BLKDISCARD to pre-discard all blocks on an SSD or 387thinly-provisioned storage device. This can be disabled using the -K 388option. 389 390Enhance libext2fs so it works around bug in Linux version 2.6.19 391and earlier where the /proc/swaps file was missing the header on 392the first line. 393 394Fix bug in Linux version 2.6.19 and earlier where the /proc/swaps file 395was missing the header on the first line. 396 397Fix some big-endian bugs in e2fsck and libext2fs. 398 399Fix resize2fs so it works correctly on file systems with external 400journals instead of failing early with the error "Illegal inode 401number". 402 403Fix libss so that it does not seg fault when using a readline library 404which does not supply a readline_shutdown() function. 405 406Updated dumpe2fs's usage message so it correctly gives the right 407arguments summary for "-o superblock=<num>" and "-o blocksize=<num>". 408(Addresses Launchpad Bug: #448099) 409 410Teach libext2fs to ignore the high 32 bits of the i_blocks field 411when huge_file file system feature is set, but the inode does not 412have the HUGE_FILE_FL flag set. 413 414Fix e2fsck's handling of 64-bit i_blocks fields. 415 416E2fsck will now print "Illegal indirect block", "Illegal 417double-indirect block", etc., instead of "Illegal block #-1" or 418"Illegal block #-2", etc. This makes it easier for users to 419understand what has gone wrong. (Addresses SourceForge Bug: #2871782) 420 421Mke2fs now will obtain get device topology information from blkid and 422use it to populate the superblock stride and stripe sizes. It will 423also warn if the block device is misaligned 424 425Fix file descriptor leaks in fsck and debugfs. (Addresses Novell Bug: 426##524526) 427 428Fix the libext2fs library code to round up the bitmap size to a 4-byte 429boundary, to prevent spurious seg faults caused by the x86 430architecture. This doesn't affect Linux systems, but was a major 431problem on a number of *BSD systems. (Addresses Sourceforge Bug: 432#2328708) 433 434Fix resize2fs's minimum size required for a file system so it doesn't 435fail when "resize2fs -M" is run. (Addresses RedHat Bugzilla: #519131) 436 437Dumpe2fs now prints summary information about the contents of the 438journal. 439 440Avoid printing scary error messages when e2fsck starts running 441problems on low-memory systems, as it tends to panic and mislead the 442user. (Addresses Debian Bug: #509529) 443 444Fix blkid's modules.dep parser so it handles compressed (.ko.gz) 445modules files. (Address Red Hat Bug: #518572) 446 447Fix tune2fs so it can add a journal when an extent-enabled file system 448is mounted. (Addresses Launchpad bug: #416648) 449 450Update Czech, Indonesian, Polish and Vietnamese translations (from the 451Translation Project). 452 453Update/clarify man pages. (Addresses Sourceforge Bug: #2822186) 454 455Fixed various Debian packaging issues --- see debian/changelog for 456details. (Addresses Debian Bugs: #540111) 457 458Programmer's Notes 459------------------ 460 461The configure script supports the --with-cc, --with-ccopts, and 462--with-ldopts options. Instead, the more standard use of CC=, 463CCFLAGS=, and LDFLAGS= in the configure command line is used instead. 464Also, --with-ld, which never worked, was also removed. 465(Addresses Sourceforge Bug: #2843248) 466 467The in-tree header files are only used if the in-tree uuid or blkid 468libraries are used. Otherwise, use the system-provided uuid or blkid 469header files if using the system-provided libraries. 470 471Fix some build failures caused by --disable-* configure options. 472 473Work around a bug in autoconf 2.64. 474 475 476E2fsprogs 1.41.9 (August 22, 2009) 477================================== 478 479Fix a bug in e2fsck routines for reallocating an inode table which 480could cause it to loop forever on an ext4 filesystem with the FLEX_BG 481filesystem feature with a relatively rare (and specific) filesystem 482corruption. This fix causes e2fsck to try to find space for a new 483portion of the inode table in the containing flex_bg, and if that 484fails, the new portion of the inode table will be allocated in any 485free space available in the filesystem. 486 487Make e2fsck less annoying by only asking for permission to relocate a 488block group's inode table once, instead of for every overlapping 489block. Similarly, only ask once to recompute the block group 490checksums, instead of once for each corrupted block group's checksum. 491 492Fix filefrag to avoid print the extent header if the FIEMAP ioctl is 493not present, and it needs to fall back to using the FIBMAP ioctl. 494 495Fix filefrag to correctly print the number of extents for zero-length 496files. (Addresses Debian Bug: #540376) 497 498Filefrag now has a -B option which forces the use of the FIBMAP ioctl 499to more easily debug the FIBMAP code. 500 501Fixed filefrag for non-extent based files. 502 503Add a new program, e2freefrag, which displays information about the 504free space fragmentation in an ext2/3/4 filesystem. 505 506Fix inode resizing via tune2fs -I so that it works correctly in the 507face of non-empty bad blocks inodes, and if the filesystem was 508formatted using the "mke2fs -E stride=N" option for RAID arrays. 509 510Fix regression in ext2fs_extent_set_bmap() caused e2fsck -fD to fail 511and corrupt large directories if the directory needs to shrink by more 512than one block. (Addresses Debian Bug: #537510) 513 514Fix e2fsck's buggy_init_scritps=1 so that the if the last write and/or 515last mount times are in the future, they are corrected even if 516buggy_init_scripts is set. This is needed because otherwise resize2fs 517will refuse to resize the filesystem, even after running "e2fsck -f". 518(Addresses Launchpad bug: #373409) 519 520E2fsck will now print much fuller information when the last mount time 521or last written time is in the future, since most people can't seem to 522believe their distribution has buggy init scripts, or they have a 523failed CMOS/RTS clock battery. 524 525Enhance dumpe2fs to dump the extent information via the 'stat' 526command, and more detailed extent information via the new command 527'dump_extents'. 528 529Update French, Polish, Czech, and Swedish translations from the 530Translation Project. 531 532Fixed various Debian packaging issues --- see debian/changelog for 533details. 534 535Programmer's Notes 536------------------ 537 538Fixed miscellaneous gcc -Wall warnings. 539 540Fixed memory leak in error path in ext2fs_block_iterate2() 541 542Fixed non-Linux build of the intl directory by adding support for the 543E/Q/V macros. 544 545The bitmap read/write functions now treat uninitialized bitmaps as 546unallocated; this fixes a number of problems in all e2fsprogs for ext4 547filesystems when there is a need to allocate new blocks or inodes, and 548there aren't any free blocks or inodes in the already-used block 549groups. 550 551Improve ext2fs_extent_set_bmap() to avoid creating new extents which 552get inserted into the extent tree when they are not needed. 553 554 555E2fsprogs 1.41.8 (July 11, 2009) 556================================ 557 558Fix resize2fs's online resizing, fixing a regression which in 559e2fpsrogs 1.41.7. (Addresses Debian Bug: #535452) 560 561Fix potential filesystem corruptions caused by using resize2fs to 562shrinking ext4 filesystems with extents enabled. (Addresses Red Hat 563Bug: #510379) 564 565Optimize uuid_generate() to avoid running uuidd if it is not setuid or 566setgid and the currently running program doesn't have write access to 567the uuidd work directory. 568 569Add safety checks (for non-Linux systems) so that uuidd isn't run with 570file descriptors 0, 1, and 2 closed; and if they are closed, uuidd 571will be careful not to close the file descriptor for its unix domain 572socket when it detaches itself from the controlling tty. Also add 573safety checks so that if the unix domain socket between the uuid 574library and uuidd program is closed for any reason, both the library 575and the uuidd will return an appropriate error code instead of looping 576in an infinite loop. 577 578The e2croncheck script, which creates an LVM snapshot and then checks 579the ext3/4 filesystem via the LVM snapshot, has been added to the 580contrib directory. 581 582Fix the filefrag program for files that have more than 144 extents. 583 584Update French, Polish, Czech, Indonesian, and Swedish translations from 585the Translation Project. 586 587Fixed various Debian packaging issues --- see debian/changelog for 588details. (Addresses Debian Bug #535530) 589 590Update/clarify man pages. 591 592Programmer's Notes 593------------------ 594 595Fix compilation problem when configured with --disable-uuid. 596 597Don't build uuidgen if configured with --disable-uuid. 598 599Add the new library function ext2fs_test_inode_bitmap_range(), and 600optimized ext2fs_test_block_bitmap_range(), which will be needed for 601future optimizations for e2fsck. 602 603Fix makefile dependencies for libcom_err so that the Makefiles work 604well on non-GNU make program. (Addresses Sourceforge Patches: #2813809) 605 606Enhance the build system so that the full set of commands executed by 607the Makefiles are displayed, instead of the Linux kernel summary 608output, if the build was configured with --enable-verbose-makecmds, or 609if GNU make is in use and the V variable is non-null, i.e., via "make 610V=1". 611 612 613E2fsprogs 1.41.7 (June 29, 2009) 614================================ 615 616Fix a bug in libext2fs which can cause e2fsck and resize2fs to write 617uninitialized data into the portion of the inode beyond the first 128 618bytes when operating on inodes mapped via extents; potentially 619corrupting filesystems. 620 621Fix memory leaks in e2fsprogs, including a very large memory leak 622which can cause e2fsck to run out of memory when checking very large 623filesystems using extents. 624 625The logsave program will now filter out the ^A and ^B characters when 626writing to the console. 627 628Harden ext2fs_validate_entry() so that lsdel will not read beyond the 629end of the block even if the directory block is corrupted. 630 631Fix debugfs from core dumping if the logdump command fails to open the 632output file. 633 634Enhance badblocks to print the currently tested block number when 635interrupted with ^C. 636 637Fix lsattr to exit with a non-zero status when it encounters errors. 638(Addresses RedHat Bugzilla #489841) 639 640Fix e2fsprogs to use the same encoding for rec_len in 64k (and larger) 641filesystems as the kernel when encoding rec_len >= 64k. For 64k 642filesystems (currently all that is supported by e2fsprogs, this is 643only a minor corner case). 644 645Resize2fs will now update the journal backup fields in the superblock 646if the journal is moved; this avoids an unnecessary full fsck after 647resizing the filesystem. (Addresses RedHat Bugzilla: #505339) 648 649Fix libext2fs to properly initialize i_extra_size when creating the 650journal and resize inodes. 651 652Change badblocks to allow block sizes larger than 4k. 653 654Fix the filefrag program so it correctly checks for errors from the 655fiemap ioctl. 656 657Update Chinese and Czech translation from the Translation Project. 658 659Clean up various man pages. (Addresses Debian Bug #531385 and #523063) 660 661 662Programmer's Notes 663------------------ 664 665Add --disable-libuuid option to configure which uses an in-system 666installed version of libuuid; the private version is enabled by 667default. 668 669Add --valgrind-leakcheck option to the test_script program which runs 670valgrind with the appropriate options to find memory leaks. 671 672 673E2fsprogs 1.41.6 (May 30, 2009) 674=============================== 675 676Fix a critical regression in e2fsck introduced version 1.41.5 which 677can undo updates to the block group descriptors after a journal replay. 678 679If e2fsck receives an I/O error while replaying the journal, prompt 680the user whether they want to ignore the error or not; if e2fsck is 681run in preen mode, force fsck to abort the preen pass. 682 683Fix a bug which would cause e2fsck to core dump if the filesystem 684contains a corrupt extent header, and the user declines to clear the 685inode. (Addresses Sourceforge Bug: #2791794) 686 687Fix e2fsck to restart only once in the case of multiple block groups 688which inodes in use that are in the uninitialized part of the block 689group's inode table. 690 691To reduce user confusion, if the /etc/mtab file is missing 692ext2fs_check_mount_point and ext2fs_check_if_mounted will return a 693new, explicit error code to indicate this case. This will cause 694e2fsck to give a clearer error message when the user is using buggy 695rescue CD's that don't properly set up /etc/mtab. (Addresses Debian 696Bug: #527859) 697 698Fix e2fsck so that if the primary group descriptors are corrupted, but 699the backup superblock is entirely invalid, to go back to using (and 700fixing) the primary group descriptors instead of completely giving up 701on the filesystem. (Addresses Debian Bug: #516820) 702 703Change e2fsck to not abort a preen pass if an inode is found to have 704i_file_acl_hi non-zero. Ext3 filesystems don't care, and newer 705kernels (post 2.6.29) will ignore this field. So let's fix it 706automatically during the preen pass instead of forcing the user to fix 707this up manually. (Addresses Debian Bug: #526524) 708 709Add resource tracking for e2fsck passes 1b through 1d. 710 711Speed up e2fsck by eliminating unnecessary journal checks if the 712filesystem is already mounted and doesn't need recovery (since the 713kernel would have run the journal when the filesystem was mounted.) 714Also speed up e2fsck by avoiding unnecessary block group descriptor 715updates in ext2fs_close(). 716 717Add support to chattr to migrate inodes from using direct/indirect 718blocks to extents. 719 720Avoid corrupting the filesystem if there is an attempt to shrink a 721filesystem using resize2fs smaller than possible by making 722ext2fs_set_bmap() more careful not to delete the old block until the 723new block can be inserted. In addition, fix a bug in how the minimum 724size of the filesystem (plus a safety margin) is calculated, and 725modify resize2fs to refuse to shrink the filesystem below that minimum 726size without the force flag. 727 728Teach blkid to try to figure out DM device names using take advantage 729of information in sysfs when running on kernels (2.6.29 and later) 730which provide this information in /sys/block/dm-<N>/dm/name; this is 731much faster than scanning for the device number in /dev/mapper. 732 733Fix blkid to prefer /dev/mapper/<name> device names instead of the 734private /dev/dm-X names. 735 736Add an -a option to debugfs's close_filesys command which writes any 737changes to the superblock or block group descriptors to all of the 738backup superblock locations. 739 740Add support to the filefrag program to use the FIEMAP ioctl. 741 742Update Chinese translation from the Translation Project. 743 744Clean up various man pages. (Addresses Red Hat Bugzilla: #502971 and 745Launchpad Bug: #381854) 746 747Fixed various Debian packaging issues --- see debian/changelog for 748details. (Addresses Debian Bug #506064) 749 750 751Programmer's Notes 752------------------ 753 754Add test code to make sure e2fsck's problem.c doesn't have two problem 755codes assigned to duplicate values. 756 757Avoid using a hard-coded path for /bin/rm in block's test_probe.in. 758(Addresses Sourceforge Bug: #2780205) 759 760Clean up e2fsck by removing #ifdef RESOURCE_TRACK by adding an empty 761function declaration for init_resource_track() and 762print_resource_track() when RESOURCE_TRACK is not defined. 763 764The test code which is used to build the tst_csum program has been 765moved from from tst_csum.c into csum.c under an #ifdef DEBUG to to 766avoid compile problems caused by not having a prototype for 767ext2fs_group_desc_csum(). (Addresses Sourceforge Bug #2484331) 768 769Update the config.guess and config.sub file to the latest from the 770FSF, to allow e2fsprogs to build on the avr32 platform. (Addresses 771Debian Bug: #528330) 772 773Add a new function, ext2fs_extent_open2(), which behaves like 774pext2fs_extent_open(), but uses the user-supplied inode structure 775when opening an extent instead of reading the inode from disk. 776 777 778E2fsprogs 1.41.5 (April 23, 2009) 779================================= 780 781Fix a number of filesystem corruption bugs in resize2fs when growing 782or shrinking ext4 filesystems off-line (i.e., when the ext4 filesystem 783is not mounted). 784 785Debugfs can now set i_file_acl_high via the set_inodes_field command, 786and print a 64-bit file acl. This is useful for debugging filesystem 787corruptions where the high bits of i_file_acl_high are set. E2fsck 788will detect and fix non-zero i_file_acl_high on 32-bit filesystems 789since some Linux kernel versions pay attention to this field even when 790they shouldn't. 791 792Speed up e2fsck when checking clean filesystems by avoiding 793unnecessary block reads, and coalescing the block group descriptor 794blocks so they are read using a single read operation. 795 796The libuuid library will now close all file descriptors before running 797uuidd. This avoids problems when the calling program has open sockets 798which then never get closed because uuidd is a long-running helper 799daemon. (Addresses Launchpad bug: #305057) 800 801In order to avoid unnecessary full filesystem checks by e2fsck after 802an on-line resize, e2fsck will ignore the NEEDS_RECOVERY flag set on 803the backup superblocks. (Addresses Red Hat Bugzilla: #471925) 804 805Mke2fs will avoid trying to create the journal when run in 806superblock-only mode (mke2fs -S), since the left-over journal in the 807inode table will cause mke2fs to fail. 808 809Fix a bug in libext2fs functions that check to see if a particular 810device or filesystem image is mounted, which would cause these 811functions to report that a file identical to the (relative) pathname 812used by a pseudo-filesystem was mounted when in fact it was not. 813 814Update Czech translation from the Translation Project. 815 816Add Chinese (simplified) translation from the Translation Project. 817 818Fix support for external journals (which was broken in e2fsprogs 8191.41.4). 820 821Fix a regression in debugfs where the "stat" command when no 822filesystem was open would cause debugfs to crash with a segmentation 823violation. 824 825Starting in the 2.6.29 linux kernel, the ext4 filesystem driver can be 826used to support filesystems without a journal. Update the blkid 827library so it understands this. 828 829The blkid library will remove an entry from the blkid cache 830representing the entire disk if partitions are found, since presumably 831the device previously had no partition table, but has now transitioned 832to using a partition table. 833 834Add a check to mke2fs and tune2fs that the argument to the -m option 835(which specifies the reserved ratio) must be greater than zero. 836(Addresses Debian Bug: #517015) 837 838Add support for tracking the number kilobytes written to the 839filesystem via the superblock field s_kbytes_written. It will be 840updated by the kernel as well as by e2fsprogs programs which write to 841the filesystem. This is useful for tracking the wear to filesystems 842on Solid State Drives. 843 844Fix compatibility issue in the libext2fs info file and makeinfo 845version 4.12. (Addresses Red Hat Bugzilla: #481620) 846 847Update/clarify man pages. (Addresses Debian Bug: #515693, #365619) 848 849Fixed various Debian packaging issues --- see debian/changelog for 850details. (Addresses Debian Bug: #506279) 851 852Programmer's Notes 853------------------ 854 855Fix Hurd compilation problem in e2fsck and tune2fs (Addresses Debian 856Bug: #521602) 857 858Fix various gcc compilation warnings and other programming cleanups. 859(Addresses Red Hat Bugzilla: #486997) 860 861Add support for building the blkid command statically. 862 863Add support for disabling the built-in blkid library in favor of a 864system-installed blkid implementation via the configure option 865--disable-libblkid. 866 867 868E2fsprogs 1.41.4 (January 27, 2009) 869=================================== 870 871Fixed a bug which could sometimes cause blkid to return an exit value 872of zero for a non-existent device (Addresses Debian Bug: #502541) 873 874Blkid will now recognize ext3 filesystems that have the test_fs flag 875set as ext3 filesystems. 876 877The blkid library will now recognize btrfs filesystems and swap 878devices currently used by user-level software suspend. 879 880Tune2fs now updates the block group checksums when changing the UUID 881to avoid causing e2fsck to complain vociferously at the next reboot. 882 883Tune2fs's inode size resizing algorithms have been fixed so it is not 884vastly inefficient for moderate-to-large filesystems, due to some 885O(n**2) and O(n*m) algorithms that didn't scale well at all. 886 887Fix tune2fs's inode resizing algorithm so it will not corrupt 888filesystems laid out for RAID filesystems; in addition, tune2fs will 889refuse to change the inode size for filesystems that have the flex_bg 890feature enabled. (This is a limitation in the current implementation 891of tune2fs -I.) 892 893E2fsprogs 1.41 broke debugfs's logdump command for normal ext3/4 894filesystems with 32-bit block numbers, when the headers for 64-bit 895block numbers was added. This regression has been fixed. 896 897Debugfs's ncheck command has been fixed to avoid printing garbage 898characters at the end of file names. 899 900Fix resize2fs for ext4 filesystems. Some blocks that that need moving 901when shrinking filesystems with uninit_bg feature would not be moved. 902In addition, blocks and inode table blocks were not being correctly 903freed when shrinking filesystems with the flex_bg feable, which caused 904resize2fs -M to fail. Finally, when blocks are moved, make sure the 905uninitialized flag in extents is preserved. 906 907Fix bug which caused dumpe2fs to abort with an error if run on a 908filesystem that contained an external journal. 909 910Some distributions used "mke3fs" as an alias for "mkfs.ext3"; check 911for this in argv[0] to provide better legacy support for these 912distributions. This is a practice that should NOT be continued, 913however. 914 915Mke2fs now has a new option -U, which allows the user to specify the 916UUID that should be used for the new filesystem. 917 918Mke2fs will treat devices that are exactly 16TB as if they were 16TB 919minus one block. This allows users who have read that ext3 supports 920up to 16TB filesystems and who create a 16TB LVM to not get confused, 921since the true limit is really 16TB minus one block. 922 923E2fsck will no longer abort an fsck run if block group has an errant 924INODE_UNINIT flag. 925 926E2fsck now distinguishes between fragmented directories and fragmented 927files in verbose mode statistics and in the fragcheck report. 928 929Fix a bug in e2fsck which caused it double count non-contiguous 930extent-based inodes. 931 932E2fsck will leave some slack space when repacking directories to allow 933room for a few directory entries to be added without causing leaf 934nodes to be split right away. 935 936Fix a bug which caused e2fsck to crash when it comes across a 937corrupted interior node in an extent tree with the error message: 938"Error1: Corrupt extent header on inode XXXXXX" 939 940E2fsck problem descriptions involving the journal are no longer 941referred to as "ext3" problems, since ext4 filesystems also have 942journals. 943 944Fix a long-standing bug in e2fsck which would cause it to crash when 945replying journals for filesystems with block sizes greater than 8k. 946 947Update Catalan translation from the Translation Project. 948 949Fixed various Debian packaging issues --- see debian/changelog for 950details. (Addresses Debian Bugs: #503057, #502323, #511207) 951 952Programmer's Notes 953------------------ 954 955Fix build of e2fsck.profiled, and add support for building profiled 956binaries in the misc directory if configured with --enable-profile. 957 958The ext2fs_open() function now performs more sanity checks on the 959superblock to avoid potential divide by zero errors by other parts of 960library. 961 962The ext2fs_read_inode_full() function now has a safety check to avoid 963a segmentation fault on corrupted filesystems. 964 965The ext2fs_new_inode() function now has a sanity check so that if the 966s_first_inode field in the superblock is insane, it will return 967EXT2_ET_INODE_ALLOC_FAIL instead of returning an invalid inode number. 968 969To avoid segmentation faults, ext2fs_block_alloc_stats() and 970ext2fs_inode_alloc_stats() now validates the passed inode or block 971number to avoid overrunning an array boundary. 972 973Various signed/unsigned errors for variables containing block numbers 974have been fixed. 975 976Accommodations for gcc's stupidity in not realizing that constant 977strings that do not contain a '%' character are safe to use in format 978strings have been made so that distributions that want to compile 979e2fsprogs with -Werror=format-security have an easier time doing so. 980 981Added a new 64-bit getsize interface, ext2fs_get_device_size2(). 982 983Added the utility make-sparse.c to the contrib directory. 984 985The ext2fs_block_iterate2() function now reflects errors from 986ext2fs_extent_set_bmap() to the caller, if the callback tries to 987change a block on an extent-based file, and ext2fs_extent_set_bmap() 988fails for some reason (for example, there isn't enough disk space to 989split a node and expand the extent tree. 990 991The ext2fs_block_iterate2() function will preserve the uninit flag in 992extents when the callback function modifies a block in an extent-based 993file. 994 995E2fsck will now flag filesystems that have an insane s_first_ino field 996in their superblock, and attempt to use a backup superblock to repair 997the filesystem. 998 999 1000E2fsprogs 1.41.3 (October 12, 2008) 1001=================================== 1002 1003E2fsck has been fixed so it prints the correct inode number for 1004uinit_bg related problems. 1005 1006E2fsck will now offer to clear the test_fs flag if the ext4 filesystem 1007is available on linux. This can be disabled via a configuration 1008option in /etc/e2fsck.conf. 1009 1010Fix a file descriptor leak in libblkid when checking to see if an ext4 1011or ext4dev module exists. 1012 1013Fix a bug in e2fsck where in preen mode, if there are disk I/O errors 1014while trying to close a filesystem can lead to infinite loops. 1015(Addresses Red Hat Bugzilla #465679) 1016 1017Fix a bug in resize2fs where passing in a bogus new size of 0 blocks 1018will cause resize2fs to drop into an infinite loop. (Addresses Red 1019Hat Bugzilla: #465984) 1020 1021Add a check in the Unix I/O functions in libext2fs so that when a 1022device is opened read/write, return an error if the device is 1023read-only using the BLKROGET ioctl. 1024 1025Fix debugfs's ncheck command so that it prints all of the names of 1026hardlinks in the same directory. 1027 1028Fix a bug in libblkid so it correctly detects whether the ext4 and 1029ext4dev filesystems are available, so that the ext4dev->ext4 1030fallback code works correctly. 1031 1032Programmer's Notes 1033------------------ 1034 1035Fix a parallel build problem by making sure util/subst is built before 1036trying to build the lib/et directory. (Addresses Sourceforge Bug: 1037#2143281) 1038 1039Updated "make depend" information for crc16.o 1040 1041 1042E2fsprogs 1.41.2 (October 2, 2008) 1043================================== 1044 1045Fix e2fsck's automatic blocksize detection. This fixes a regression 1046from e2fsprogs 1.40.7 which caused e2fsck to fail if the user 1047specifies a block number using the -b option if the blocksize option 1048isn't also specified using -B. Unfortunately, users very commonly 1049invoke e2fsck using "e2fsck -b 32768 /dev/hdXXX" to use the backup 1050superblock; in fact e2fsck will often suggest this kind of command 1051line. Oops. 1052 1053Enhance the debugfs's "ncheck" command so it will print all of the 1054pathnames for the specified inodes. (Previously, in some cases ncheck 1055might not print a pathname for an inode at all if some of the other 1056inodes had multiple hard links.) 1057 1058Enhance debugfs's "hash" command so the hash seed can be specified via 1059a command-line option. In addition, allow the hash algorithm to be 1060specified by name instead of just by number. 1061 1062Fix e2fsck so that we don't accidentally print the translation file's 1063header when asking the user a custom question so there is no prompt 1064defined for a particular problem record. For example, the question 1065"Run journal anyway" will get the PO header tacked on because e2fsck 1066erroneously passed the null string to _(). (Addresses Launchpad Bug: 1067#246892) 1068 1069Enhance badblocks so that it can test a normal file which is greater 1070than 2GB. 1071 1072Enhance the badblocks command so that it displays the time and 1073percentage complete when in verbose mode. (Addresses Debian Bug: 1074#429739) 1075 1076Fix a potential memory leak in a error handling path in debugfs's 1077ncheck function. 1078 1079Fix a potential memory corruption problem if a memory allocation fails 1080in resize2fs. 1081 1082Fix the usage message for debugfs's logdump command to be consistent 1083with its man manpage. 1084 1085Update Polish, French, Vietnamese, Dutch, Indonesian, German, Czech, 1086and Swedish translations from the Translation Project. 1087 1088Add documentation for the file I/O functions to the libext2fs.texinfo 1089file. (Addresses Debian Bug: #484877) 1090 1091Update and clarified various man pages. (Addresses Launchpad Bug 1092#275272; Addresses Debian Bugs: #498100, #498101, #498102, #498103) 1093 1094Fixed various Debian packaging issues --- see debian/changelog for 1095details. (Addresses Debian Bug: #497619) 1096 1097Programmer's Notes 1098------------------ 1099 1100Fix a potential file descriptor leak in libcom_err by setting the 1101close-on-exec flag for a fd used for debugging. (Addresses Red Hat 1102Bugzilla #464689) 1103 1104Fix a potential race in libcom_err by using sem_post/sem_init. SuSE 1105has been carrying a patch for a long time to prevent a largely 1106theoretical race condition if a multi-threaded application adds and 1107removes error tables in multiple threads. Unfortunately SuSE's 1108approach breaks compatibility by forcing applications to link and 1109compile with the -pthread option; using pthread mutexes has 1110historically been problematic. We fix this by using sem_post/sem_init 1111instead. 1112 1113Fix e2fsprogs-libs build failure due to 'subs' target. (Addresses 1114Sourceforge Bug: #2087502) 1115 1116Avoid linking e2initrd_helper, debugfs, blkid, and fsck with unneeded 1117libraries when using ELF shared libraries. 1118 1119Fix ELF shared library when building on systems that don't already 1120have the e2fsprogs shared libraries already installed. (Addresses 1121Sourceforge Bug: #2088537) 1122 1123Fix the pkg-config files so they work correctly when linking with 1124static libraries and fix the include directory so programs don't have 1125to use #include <ext2fs/ext2fs.h>, but can use #include <ext2fs.h> 1126instead. (Addresses Sourceforge Bug: #2089537) 1127 1128Make sure ext2fs_swab64() is compiled for all platforms, and not just 1129for x86. (Addresses Debian Bug: #497515) 1130 1131Remove the unused ext2fs_find_{first,ext}_bit_set() functions for all 1132non-x86 platforms. (They had been removed for x86 earlier.) 1133 1134Fix diet libc compilation support, which had bitrotted due to lack of 1135TLC. Fixing this improves general portability. 1136 1137When installing the link library when using ELF shared libraries, 1138avoid using absolute pathnames if the link library and the shared 1139library are installed in the same directory. (Addresses Sourceforge 1140Bug: #1782913) 1141 1142Fix gen-tarball so it will work even if the top-level directory has 1143been renamed to something other than "e2fsprogs". Also make 1144gen-tarball print the size of the resulting tar.gz file. 1145 1146 1147E2fsprogs 1.41.1 (September 1, 2008) 1148==================================== 1149 1150Many people are forgetting to update their mke2fs.conf file, and this 1151causes ext3, ext4, and ext4dev filesystems won't get created with the 1152proper features enabled. We address this in two ways. First, mke2fs 1153will issue a warning if there is not definition for an ext3, ext4, or 1154ext4dev filesystem and the user is trying to create such a filesystem 1155type. Secondly, when installing from a source build, "make install" 1156will provide basic configuration file handling for /etc/mke2fs.conf. 1157If it exists, and does not mention ext4dev, it will be moved aside to 1158/etc/mke2fs.conf.e2fpsrogs-old and the new /etc/mke2fs.conf file will 1159be installed. If the existing /etc/mke2fs.conf file does mention 1160ext4dev, then "make install" will install official mke2fs.conf file as 1161/etc/mke2fs.conf.e2fsprogs-new and issue a message to the user that 1162they should look to see if any changes need to be merged. 1163 1164The mke2fs program will now create the journal in the middle of the 1165filesystem, since this minimizes seek times on average for fsync-heavy 1166workloads. In addition, mke2fs will now create journals using extents 1167for filesystems that support them. This results in a more efficient 1168encoding for the journal since it eliminates the need for using 1169indirect blocks. 1170 1171The mke2fs program will avoid allocating an extra block to the 1172journal. (Addresses Sourceforge Bug: #1483791) 1173 1174Mke2fs will correctly enforce the prohibition against features 1175(specifically read-only features) in revision 0 filesystems. (Thanks 1176to Benno Schulenberg for noticing this problem.) 1177 1178Mke2fs previously would occasionally create some slightly non-optimally 1179placed inode tables; this bug has been fixed. 1180 1181The mke2fs and tune2fs programs now print the correct usage message 1182describing the maximum journal size. (Addresses Debian Bug: #491620) 1183 1184Add support for setting the default hash algorithm used in b-tree 1185directories in tune2fs (from a command-line option) or mke2fs (via 1186mke2fs.conf). In addition, change the default hash algorithm to 1187half_md4, since it is faster and better. 1188 1189The blkid library will now recognize MacOS hfsx filesystems, and 1190correctly extract the label and uuid for hfs, hfsx, and hfsplus 1191filesystems. (Addresses Sourceforge Feature Requests: #2060292) 1192 1193The blkid library has improved detection of JFS and HPFS filesystems. 1194(Addresses Launchpad Bug: #255255) 1195 1196The blkid library is now much more efficiently handling devicemapper 1197devices, mainly by no longer using the devicemapper library. This can 1198speed up access for systems with a large number of device mapper 1199devices. 1200 1201Blkid had a number of cache validation bugs in libblkid that have been 1202fixed. (Addresses Debian Bug: #493216) 1203 1204Resize2fs will now properly close out the "updating inode references" 1205progress bar so there is a newline printed before printing the final 1206"resize is successful" message. 1207 1208Resize2fs will now correctly handle filesystems with extents and/o 1209uninitialized block groups correctly when file/directory blocks need 1210to relocated (i.e., when shrinking a filesystem or if the resize_inode 1211is not present). To support this, the ext2fs library now supports 1212initializing inode and block bitmaps that are not yet initialized when 1213allocating them using ext2fs_new_block() and ext2fs_new_inode(). In 1214addition, e2fs_block_iterate2() can now support changing the location 1215of interior nodes of an extent tree, and ext2fs_extent_set_bmap() has 1216been optimized to avoid creating unnecessary new extents when updating 1217the location of blocks in the extent tree. This will also help out 1218e2fsck's recovery of obscurely corrupted filesystems with extents, 1219when blocks are claimed by multiple inodes. 1220 1221Add support for on-line resizing ext4 filesystem with the flex_bg 1222filesystem feature. The method for doing so is not optimal, but to do 1223a better job will require kernel support. 1224 1225E2fsprogs 1.41.0 introduced a bug in libext2fs which caused e2image and 1226debugfs programs to not be able to read e2image files; the signed 1227vs. unsigned bug in the code which read bitmaps from the e2image has 1228been fixed. (Addresses Debian Bug: #495830) 1229 1230Resize2fs is now correctly managing the directory in-use counts when 1231shrinking filesystems and directory inodes needed to be moved from one 1232block group to another. This bug has been around since e2fsprogs 12331.26, and is largely harmless, but does cause a filesystem corruption 1234which will be flagged by e2fsck after the filesystem has been shrunk. 1235 1236E2fsck will no longer issue spurious complaints about the inode size 1237caused by very large extent-based files, and by blocks reallocated 1238using fallocate() with the FALLOC_FL_KEEP_SIZE option. (Addresses 1239Kernel Bugzilla: #11341) 1240 1241Mke2fs will now set the creation timestamp on the lost+found directory 1242and the root directory. (More generally, all new inodes created using 1243the ext2fs library will correctly set the creation timestamp.) 1244 1245E2fsck now correctly calculates ind/dind/tind statistics in the 1246presence of extent-based files. In addition, "e2fsck -v" will report 1247statistics of the depth of extent trees in the filesystem. E2fsck can 1248also give an inode fragmentation report using "e2fsck -E fragcheck" 1249which can be useful when debugging the kernel block allocation 1250routines. 1251 1252Fix support for empty directory blocks in ext4 filesystems with 64k 1253blocksize filesystems. 1254 1255E2fsck will now print the depth of corrupt htree directories. 1256 1257Debugfs's htree command now correctly understands extent-based 1258directories. It will also print out the minor hash as well as the 1259major hash. 1260 1261Debugfs has a new command which will print the supported features of 1262e2fsprogs, to enable scripts to know whether the installed version of 1263e2fsprogs can support a specific feature. 1264 1265Debugfs will now write files using extents for filesystems that 1266support them. 1267 1268The error message printed by "tune2fs -I" if the inode size was too 1269small was rather confusing, so it has been improved. Also, we won't 1270try to create an undo log until we know that command-line-specified 1271parameters such as "tune2fs -I <inode size>" are valid. 1272 1273Given some filesystems found "in the wild" that had non-zero block 1274group checksums even though the uninit_bg/gdt_sum feature was not 1275enabled, e2fsck would issue spurious error messages. Teach 1276ext2fs_group_desc_csum_verify() to ignore the block group checksum 1277entirely if the feature flag is not set. (Addresses Debian Bug: 1278#490637) 1279 1280The blkid program will now print out a user-friendly listing of all of 1281the block devices in the system and what they contain when given the 1282-L option. (Addresses Debian Bug: #490527) 1283 1284The filefrag program now has a more accurate calculation for the 1285number of ideal extents. (Addresses Debian Bug: #458306) 1286 1287The test I/O manager is now enabled by default, but its overhead is 1288only incurred when it would be enabled via the TEST_IO_FLAGS or 1289TEST_IO_BLOCK environment variables. 1290 1291Typographical errors in various program strings and usage messages 1292have been fixed; most of these were pointed out by the e2fsprogs 1293message catalog translators. (Thanks, translators!) 1294 1295Update and clarified various man pages, as well as some typographical 1296errors in the libext2fs texinfo file. 1297 1298Fixed various Debian packaging issues --- see debian/changelog for 1299details. 1300 1301Add Indonesian and update French, Polish, Dutch, German, Swedish, 1302Czech, and Vietnamese Translations. (Addresses Debian Bugs: #313697, 1303#401092) 1304 1305Programmer's Notes 1306------------------ 1307 1308Fix portability problem with the badblocks group; for systems that 1309don't have nanosleep(), try using usleep() instead. 1310 1311The "make check" target in the e2fsck directory now sets 1312LD_LIBRARY_PATH before running the various e2fsck internal library 1313regression tests. 1314 1315The crc32 regression test in the e2fsck library is now portable to 1316greater variety of environments, including big-endian systems and 1317when cross-building e2fsprogs for embedded systems. (Addresses 1318Sourceforge Bug: #2019287) 1319 1320The ext2fs_extent_set_bmap() had some bugs when setting the first 1321block in a file, or when replacing a single block extent. Those cases 1322fortunately were came up relatively rarely when e2fsck was checking 1323files, but caused some problems when resize2fs was shrinking 1324extent-based files. 1325 1326Fix a potential core-dumping bug in libe2p's iterate_on_dir() 1327function. 1328 1329Various ext2fs library functions --- ext2fs_block_iterate2(), 1330ext2fs_initialize() and ext2fs_extent_open() --- now correctly free 1331allocated memory to avoid memory leaks in all of their error return 1332paths. 1333 1334Ext2ed was failing to build because masix support had been removed in 1335the rest of e2fsprogs, so ext2ed no longer has masix support, either. 1336 1337The configure script now respects the LDFLAGS environment variable if 1338it is set when configure is called. (Addresses Sourceforge Feature 1339Request: #1937287) 1340 1341Libuuid is now more portable to the Windows platform. (Addresses 1342Sourceforge Feature Request: #1937287) 1343 1344The configure script now uses AC_MSG_{RESULT,WARN,ERROR} instead of 1345bare echo commands so that configure flags such as --quiet work 1346correctly. (Addresses Sourceforge Patches: #2058794) 1347 1348A few uses of sprintf have been removed from the ext2fs library to 1349make life easier for bootloaders with a limited libc environment. 1350(Addresses Sourceforge Bug: #2049120) 1351 1352The ext2fs_read_inode() checks the validity of the inode number passed 1353to it earlier, to avoid doing some needless work when it would fail 1354anyway. 1355 1356The ext2fs_open() checks the validity of the blocksize parameter 1357passed to it earlier, to avoid doing some needless work when it would 1358fail anyway. 1359 1360Disable a very annoying automatic "%.sh -> %" GNU make rule in the 1361top-level Makefile. That automatic rule is used to better support 1362SCCS, but it caused problems for a particular niche distribution which 1363likes to use configure.sh files to store the configure options used to 1364build a package. Unfortunately GNU make will use the configure.sh to 1365replace the configure script, resulting in a self-inflicted fork bomb 1366leading to an out-of-memory crash. 1367 1368To support old GNU C compilers don't use C99/C++ comments, but only 1369K&R style comments, and don't try to use __builtin_expect if __GNUC__ 1370is less than 3. (__builtin_expect is only supported for gcc versions 13712.96 and up, and it's tricky to check for gcc 2.95 vs gcc 2.96; since 1372this is an optimization, we only try to use __builtin_expect for gcc 3 1373and up.) 1374 1375In e2fsck's crc routines, make sure we use WORDS_BIGENDIAN instead of 1376__LITTLE_ENDIAN, which are only defined by glibc's header files and 1377hence isn't portable. 1378 1379For the convenience for some distributions that need a static tune2fs, 1380the Makefile for misc/ now has a tune2fs.static target. 1381 1382The ext2fs_block_iterate2() function now supports BLOCK_FLAG_APPEND 1383for extent-based files 1384 1385The ext2fs_bmap() function now supports BMAP_ALLOC for extent-based 1386files. 1387 1388All source files no longer have any trailing white space. 1389 1390The io_channel_read_blk64() and io_channel_write_blk64() functions are 1391now functions instead of C preprocessor macros to provide better 1392forward compatibility. 1393 1394The e2fpsrogs translation template now expands the @x abbreviation. 1395 1396Various namespace leakages in libblkid, libe2p, and libext2fs have 1397been fixed. 1398 1399Fix a parallel build problem in e2fsprogs. 1400 1401E2fsprogs is now more portable to Solaris. 1402 * blkid no longer assumes that the TIOCGSIZE and TIOCGWINSZ ioctl's 1403 are always present. 1404 * Scripts do not assume that /bin/true is always in /bin 1405 * Don't use __FUNCTION__ since Solaris's C99 doesn't support it. 1406 * Flush stdio handles before calling setbuf(), since Solaris will 1407 discard any pending output to the stream. 1408 * Define _XOPEN_SOURCE to 600 since Solaris's header files are very 1409 picky about which C compiler can be used for SUSv3 conformance. 1410 Use of C99 is not compatible with SUSv2 (_XOPEN_SOURCE=500), 1411 and C89 is not compatible with SUSv3 (_XOPEN_SOURCE=600). 1412 Since we need some SUSv3 functions, consistently use SUSv3 so 1413 that e2fsprogs will build on Solaris using c99. 1414 * Solaris C99 does not support varargs C preprocessor macros 1415 * Solaris header files pollute the C namespace if in/netinet.h 1416 is included, which conflicts with e2fsprogs' use of the kmem_cache_t 1417 typedef. 1418 * Solaris ships with a pathetically ancient shell in /bin/sh so we 1419 avoid the use of various more advanced shell constructs such as $(). 1420 1421The "make rpm" command will now take some extra configure options from 1422the build environment without needing to patch the source tree. 1423 1424The ext2fs_add_dir_block() function will now grow the dblist more 1425aggressively as an optimization to avoid copying the array too often. 1426 1427The e2fsck_write_bitmaps() will write the block and inode bitmaps 1428together instead of in two passes. 1429 1430 1431E2fsprogs 1.41 (July 10, 2008) 1432============================== 1433 1434Add support for ext4 filesystem features, in particular extents, 1435uninit_bg, flex_bg, huge_file, and dir_nlink features. Also add 1436support for checking journal checksums. Debugfs will print new 1437superblock and inode fields that were defined for ext4. For example, 1438the nanosecond and i_version fields of an inode, and the 1439s_min_extra_isize and s_wanted_extra_isize fields from the superblock. 1440Note: Resize2fs doesn't currently support the combination of flex_bg 1441and !resize_inode. (Addresses Debian Bug: #388452, #425477) 1442 1443Tune2fs can support migrating a filesystem from using 128 byte inodes 1444to 256 byte inodes, so it can take advantage of the full features of 1445ext4. 1446 1447Add support for "undo" support. E2fsck and mke2fs can optionally 1448record an undo log which can replayed by the program e2undo. 1449 1450E2fsck could damage a filesystem by trying to relocate inode tables 1451due to corrupted block group descriptors, where the attempted inode 1452table relocation would do far more harm than good. E2fsck has been 1453fixed to detect this these sorts of corrupted block group descriptors 1454much earlier in e2fsck processing, so it can try to use the backup 1455superblock and block group descriptors first. This should be a much 1456better strategy for recovering these types of corrupted filesystems. 1457(Addresses Sourceforge Bug: #1840291) 1458 1459E2fsck will display a more understandable message when the last check 1460field in the superblock is in the future. (Addresses Debian Bug: 1461#446005). 1462 1463E2fsck now performs more extensive and careful checks of extended 1464attributes stored in the inode. 1465 1466Enhance mke2fs to print a more explanatory error message when 1467ext2fs_get_device_size() returns EFBIG. (Addresses Debian Bug: 1468#488663) 1469 1470Fix mke2fs to use a default block size of 4k when formatting an 1471external journal device. This is done by using a fixed filesystem 1472type list that consists only of the single filesystem type "journal" 1473when looking up configuration keys in /etc/mke2fs.conf. (Addresses 1474Debian Bug: #488663) 1475 1476Speed up how mke2fs writes the journal data blocks by writing the disk 1477blocks in larger chunks. 1478 1479Fix blkid handling of stale devices. Fix a bug which could cause a 1480core dump while garbage collecting the blkid cache, and assure that 1481blkid_find_dev_with_tag() never returns a non-existent device. Also, 1482if a filesystem is found at a new /dev location, eliminate any 1483duplicate stale entries which can not be verified. 1484(Addresses Debian Bugs: #487758, #487783) 1485 1486Add more paranoid checks for LVM volumes and swap partitions in 1487blkid's probe function, to reduce the chances of false positives. 1488 1489The mke2fs program now has a much more sophisticated system for 1490controlling configuration parameters of a newly created filesystem 1491based on a split filesystem and usage type system. The -t option to 1492mke2fs was a deprecated alias to -c; it now specifies a filesystem 1493type (ext2, ext3, ext4, etc.), while the -T option can now be a comma 1494separated usage list. The filesystem type information and type 1495information is used to extract configuration parameters from the 1496/etc/mke2fs.conf file. 1497 1498The mke2fs program will no longer complain and request the -f option 1499when the user tries to create a filesystem with greater than 2**31 1500blocks. 1501 1502When creating a filesystem for the GNU Hurd use a fs-type of Hurd and 1503adjust the mke2fs.conf file so filesystems for the Hurd are created 1504with a blocksize of 4096 and inode size of 128, which is all it knows 1505how to handle. (Addresses Debian Bug: #471977) 1506 1507Mke2fs will always make sure that lost+found always has at least 2 1508blocks, even for filesystems with very large blocksizes (i.e., 64kb). 1509 1510Resize2fs will now print the minimum needed filesystem size if given 1511the -P option, and will resize the filesystem to the smallest possible 1512size if given the -M option. 1513 1514Fix resize2fs to clean up the resize_inode if all of the reserved gdt 1515blocks are consumed during an off-line resize. 1516 1517The "ls" command in debugfs now supports the -p option, which causes 1518it to quote the filenames so that spaces or tabs in directory entries 1519are easily visible. (Addresses Red Hat Bugzilla: #149480; Addresses 1520Sourceforge Feature Request: #1201667) 1521 1522Fix a potential off-by-one buffer overflow in the fs_device_name in an 1523e2image file. 1524 1525The chattr program will return a non-zero exit code in case of 1526failures, and error messages can be suppressed with the -f option. 1527(Addresses Red Hat Bugzilla: #180596) 1528 1529Fix a bug in badblocks which caused it to overrun an array and likely 1530crash if more than 8 test patterns are specified using the -t option. 1531(Addresses Debian Bug: #487298) 1532 1533Add support to badblocks to limit how quickly it reads from the disk 1534drive (so it can be used for background scrubbing), and so it will 1535abort after finding a given number of errors. 1536 1537Remove support for the legacy big-endian filesystem format which only 1538existed on extremely long-dead PowerPC kernels almost a decade ago. 1539 1540Remove MASIX support from e2fsprogs. 1541 1542Add I/O statistics reporting to e2fsck. 1543 1544Update Vietnamese, Polish, French, Spanish, German, Catalan, Dutch, 1545Czech translations. 1546 1547Fixed various Debian packaging issues --- see debian/changelog for 1548details. (Addresses Debian Bugs: #487443, #487675, #490003) 1549 1550Fixed spelling mistakes, typos, and otherwise clarified man pages. 1551(Addresses Debian Bugs: #393313, #487849, #440983, #440981) 1552 1553Programmer's Notes 1554------------------ 1555 1556Factor out bitmap code in preparation for adding 64-bit new-style 1557bitmaps. 1558 1559Fix gcc -Wall warnings 1560 1561Fix the pkg-config files so that private libraries are specified in 1562"Libs.private:". 1563 1564Fix the libext2fs.texinfo manual so it builds with modern versions of 1565texinfo. 1566 1567Silence the makefile from showing the awk command used to build the 1568 1569Clean up the badblocks group so to make it more portable and robust. 1570 1571Avoid using predictable filenames in /tmp in blkid's regression test 1572suite. Also remove bashism's in the regression test script. 1573 1574If the configure script is given --with-diet-libc, don't use thread 1575local storage, since diet libc doesn't support TLS. (Addresses 1576Sourceforge Bug: #2000654) 1577 1578Fix the blkid regression test suite to tolerate older versions of 1579mkswap that don't support the -U option. 1580 1581A few library routines have been converted to support 64-bit block 1582numbers; in particular, the I/O manager functions, the test_io, 1583inode_io, and unix_io managers have all be converted to support 64-bit 1584operation. 1585 1586Debugfs can now be extended for use by test programs. See 1587lib/ext2fs/extents.c for an example for how it can be used. The test 1588program links against the debugfs object files, and provides 1589additional commands by defining an auxiliary libss command table. 1590 1591The lazy_bg filesystem feature, which was only used by developer's 1592testing, has been removed since it has been largely supplanted by 1593uninit_bg. This also simplifies the code. 1594 1595