E2fsprogs 1.44.3 (July 3, 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.
