• Qu Wenruo's avatar
    btrfs: make btrfs_submit_compressed_read() subpage compatible · be6a1361
    Qu Wenruo authored
    For compressed read, we always submit page read using page size.  This
    doesn't work well with subpage, as for subpage one page can contain
    several sectors.  Such submission will read range out of what we want,
    and cause problems.
    
    Thankfully to make it subpage compatible, we only need to change how the
    last page of the compressed extent is read.
    
    Instead of always adding a full page to the compressed read bio, if we're
    at the last page, calculate the size using compressed length, so that we
    only add part of the range into the compressed read bio.
    
    Since we are here, also change the PAGE_SIZE used in
    lookup_extent_mapping() to sectorsize.
    This modification won't cause any functional change, as
    lookup_extent_mapping() can handle the case where the search range is
    larger than found extent range.
    Reviewed-by: default avatarAnand Jain <anand.jain@oracle.com>
    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>
    be6a1361
compression.c 44.2 KB