Skip to content
Snippets Groups Projects
user avatar
Theodore Ts'o authored
This fixes a regression introduced by commit f7fec032.  The
problem was that the extents status flags caused us to mask out block
numbers smaller than 2**28 blocks.  Since we didn't test with file
systems smaller than 512GB, we didn't notice this during the
development cycle.

A typical failure looks like this:

EXT4-fs error (device sdb1): htree_dirblock_to_tree:919: inode #172235804: block
152052301: comm ls: bad entry in directory: rec_len is smaller than minimal -
offset=0(0), inode=0, rec_len=0, name_len=0

... where 'debugfs -R "stat <172235804>" /dev/sdb1' reports that the
inode has block number 688923213.  When viewed in hex, block number
152052301 (from the syslog) is 0x910224D, while block number 688923213
is 0x2910224D.  Note the missing "0x20000000" in the block number.

Reported-by: default avatarMarkus Trippelsdorf <markus@trippelsdorf.de>
Verified-by: default avatarMarkus Trippelsdorf <markus@trippelsdorf.de>
Reported-by: default avatarDave Jones <davej@redhat.com>
Verified-by: default avatarDave Jones <davej@redhat.com>
Cc: Zheng Liu <gnehzuil.liu@gmail.com>
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
8e919d13
History
Name Last commit Last update