• Qu Wenruo's avatar
    btrfs: defrag: replace hard coded PAGE_SIZE with sectorsize · 76068cae
    Qu Wenruo authored
    When testing subpage defrag support, I always find some strange inode
    nbytes error, after a lot of debugging, it turns out that
    defrag_lookup_extent() is using PAGE_SIZE as size for
    lookup_extent_mapping().
    
    Since lookup_extent_mapping() is calling __lookup_extent_mapping() with
    @strict == 1, this means any extent map smaller than one page will be
    ignored, prevent subpage defrag to grab a correct extent map.
    
    There are quite some PAGE_SIZE usage in ioctl.c, but most of them are
    correct usages, and can be one of the following cases:
    
    - ioctl structure size check
      We want ioctl structure to be contained inside one page.
    
    - real page operations
    
    The remaining cases in defrag_lookup_extent() and
    check_defrag_in_cache() will be addressed in this patch.
    Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    76068cae
ioctl.c 124 KB