• Josef Bacik's avatar
    Btrfs: fix fiemap · 975f84fe
    Josef Bacik authored
    There are two big problems currently with FIEMAP
    
    1) We return extents for holes.  This isn't supposed to happen, we just don't
    return extents for holes and then userspace interprets the lack of an extent as
    a hole.
    
    2) We sometimes don't set FIEMAP_EXTENT_LAST properly.  This is because we wait
    to see a EXTENT_FLAG_VACANCY flag on the em, but this won't happen if say we ask
    fiemap to map up to the last extent in a file, and there is nothing but holes up
    to the i_size.  To fix this we need to lookup the last extent in this file and
    save the logical offset, so if we happen to try and map that extent we can be
    sure to set FIEMAP_EXTENT_LAST.
    
    With this patch we now pass xfstest 225, which we never have before.
    Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    975f84fe
extent_io.c 94.7 KB