E2fsprogs 1.43.8 (January 1, 2018)
==================================

Fix a bug where updated bitmap checks might not be written to disk.
(Addresses Debian Bug: #883869)

Some newly added fields in the superblocks were not getting byte
swapped (which were not noticed since big endian systems are amazingly
unpopular).  Fix them and compile-time checks to avoid this class of
bugs from happening in the future.  (Lustre Bug #9309)

Fix a potential use after free bug in e2fsck when fixing a corrupted
root node in directory hash tree.

Fix a bug in e2fsck where a badly/maliciously corrupted superblock
(which is not fixed due to the -n option, for example) can cause a
floating point exception when printing the summary statistics.
(Addresses Debian Bug: #879220)

Fix debugfs's ncheck command so that it correctly prints the inode
number when printing an error message.

Fix a bug in e2freefrag where it could print an incorrect free blocks
count on a file system with the 64-bit block number feature.

Update the German, Serbian, Spanish, and Ukrainian translations.

Fix a bug where resize2fs's free blocks sanity check could fail with a
false positive and refuse to check a file system with the 64-bit block
number feature.

Fix and clarify various man pages and documentations.  Also fixed up
some random usage texts that were incorrect.  (Addresses Debian Bugs:
#880483)

Fixed various Debian Packaging Issues.  (Addresses Debian Bugs: #880207,
#881408, #881590, #881591)

Programming notes
-----------------

Fix various compiler warnings.

Clean up Makefile output.

Fix compatibility problems with glibc 2.27 casued by a collision with
copy_file_range().


