E2fsprogs 1.44.3 (July 10, 2018)
================================

Updates/Fixes since v1.44.2:

UI and Features
---------------

The debugfs inode_dump command can now print a hex dump of the i_block
array and the extra space in the inode, as a convenience to someone
investigating a corrupted inode.

The debugfs block_dump and inode_dump command can now print low-level
dump of extended attribute data structures in the block or inode.

The dumpe2fs command can now print out information in the Multi-Mount
Protection (MMP) block.  This is also available as e2mmpstatus command
for compatibility with the Lustre utilities.

The debugfs command can now operate on some file systems with
corrupted superblocks so they can be fixed.  This includes file
systems with a corrupted inodes count field and file systems where not
all of the allocation bitmaps have valid locations or are not
readable.


Fixes
-----

The inode's project ID is now properly byte-swapped on big-endian
systems.

E2fsprogs now ignores s_desc_size for file systems that do not have
the 64-bit feature set.  This makes it more consistent with the
kernel, so it can now operate on file systems that the kernel is
willing to mount.  

E2fsck now considers device inodes with the extents flag as corrupt
and offer to clear them.

E2fsck more properly handles cases where s_inodes_count is corrupted.

E2fsck no longer spews large number of errors when the superblock
badly corrupted (restoring its behavior pre-1.43).

E2fsck will now offer to set the dir_nlink feature if it is not set
and file system requires the dir_nlink feature because there are too
many subdirectories in a directory.

E2fsck will no longer loop infinitely due to a maliciously crafted
file system which has a fully uninitialized inode table in the first
block group.

E2fsck will no longer hang if the last block in the file system is a
fixed-metadata block.  (Very rare, but could happen.)

E2fsck no longer allows initialized blocks to exist past i_size.  This
is something the Linux implementation of ext4 has never done (and should
never do).

While replaying the journal in e2fsck, certain errors would previously
cause e2fsck to print a non-sensical error message (e.g., "Unknown code
____ 251 while recovering journal").  This has been fixed.

In cases where more than 75% of the block group will be used for group
descriptor table, mke2fs would previously create an invalid file
system with both the meta_bg and resize_inode features enabled.  It
will now disable the resize_inode feature.

The mke2fs program now properly creates a file system which is exactly
1 << 32 blocks.  Previously the s_inodes_count field would overflow,
and the file system would be created with a minimal number of inodes.

Recent kernels will report errors on a file or block device which
occurred before the file or block device was opened via fsync() or
close().  This will cause e2fsck to incorrectly report a failure.  Work
around this by calling fsync() immediately after the file or block
device is opened in the unix_io layer, and throwing away the error.

Filefrag will no longer ignore errors returned by fsync.

Debugfs will no longer print spurious checksum errors when failing to
open a file system for unrelated reasons.

Updated/fixed various man pages.  (Addresses Launchpad Bug: #1743553)



Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------

Synchronized changes from Android's AOSP e2fsprogs tree.

Debugfs's mknod command now works correctly on some 32-bit systems where
previously it had a portability problem caused by some object files
being compiled with LFS, and some without.  This fixes some regression
test failures on 32-bit MIPS (for example).

Various clean ups, portability, and performance improvements to
e2fsprogs's regression test framework.

Fixed Coverity, sparse, gcc -Wall, and clang warnings/nits.

Update Czech, Dutch, Spanish, French, Polish, Swedish, Ukrainian, and
Vietnamese translations.
