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