Skip to content
Commit 8e919d13 authored by Theodore Ts'o's avatar Theodore Ts'o
Browse files

ext4: fix extent status tree regression for file systems > 512GB

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>
parent 304e220f
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment