ext4: fix for fiemap last-block test
authorEric Sandeen <sandeen@redhat.com>
Sat, 2 May 2009 03:32:06 +0000 (23:32 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sat, 2 May 2009 03:32:06 +0000 (23:32 -0400)
commitc9877b205f6ce7943bb95281342f4001cc1c00ec
tree2556179d7591d8fa7e770e3f2be15a467fe59a6e
parent19ba0559f9ce104171ab16706893ce01f03ef116
ext4: fix for fiemap last-block test

Carl Henrik Lunde reported and debugged this; the test for the
last allocated block was comparing bytes to blocks in this test:

if (logical + length - 1 == EXT_MAX_BLOCK ||
    ext4_ext_next_allocated_block(path) == EXT_MAX_BLOCK)
flags |= FIEMAP_EXTENT_LAST;

so any extent which ended right at 4G was stopping the extent
walk.  Just replacing these values with the extent block &
length should fix it.

Also give blksize_bits a saner type, and reverse the order
of the tests to make the more likely case tested first.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reported-by: Carl Henrik Lunde <chlunde@ping.uio.no>
Tested-by: Carl Henrik Lunde <chlunde@ping.uio.no>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/extents.c