|Reported by:||Bruce Dubbs||Owned by:||Douglas R. Reno|
New point version.
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.
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.
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.