diff -Naur linux-2.6.32-rc5/fs/ext4/extents.c linux-2.6.32-rc5.patched/fs/ext4/extents.c --- linux-2.6.32-rc5/fs/ext4/extents.c 2009-10-16 02:41:50.000000000 +0200 +++ linux-2.6.32-rc5.patched/fs/ext4/extents.c 2009-11-04 19:35:44.000000000 +0100 @@ -3685,6 +3685,7 @@ __u64 start, __u64 len) { ext4_lblk_t start_blk; + ext4_lblk_t end_blk; ext4_lblk_t len_blks; int error = 0; @@ -3700,7 +3701,8 @@ error = ext4_xattr_fiemap(inode, fieinfo); } else { start_blk = start >> inode->i_sb->s_blocksize_bits; - len_blks = len >> inode->i_sb->s_blocksize_bits; + end_blk = (start + len - 1) >> inode->i_sb->s_blocksize_bits; + len_blks = end_blk - start_blk + 1; /* * Walk the extent tree gathering extent information.