• Lukas Czerner's avatar
    ext4: use FIEMAP_EXTENT_LAST flag for last extent in fiemap · c03f8aa9
    Lukas Czerner authored
    Currently we are not marking the extent as the last one
    (FIEMAP_EXTENT_LAST) if there is a hole at the end of the file. This is
    because we just do not check for it right now and continue searching for
    next extent. But at the point we hit the hole at the end of the file, it
    is too late.
    
    This commit adds check for the allocated block in subsequent extent and
    if there is no more extents (block = EXT_MAX_BLOCKS) just flag the
    current one as the last one.
    
    This behaviour has been spotted unintentionally by 252 xfstest, when the
    test hangs out, because of wrong loop condition. However on other
    filesystems (like xfs) it will exit anyway, because we notice the last
    extent flag and exit.
    
    With this patch xfstest 252 does not hang anymore, ext4 fiemap
    implementation still reports bad extent type in some cases, however
    this seems to be different issue.
    Signed-off-by: default avatarLukas Czerner <lczerner@redhat.com>
    Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
    c03f8aa9
ext4_extents.h 9.12 KB