Home | History | Annotate | Download | only in RelNotes
      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