• N
    btrfs: Exploit the fact that pages passed to extent_readpages are always contiguous · e65ef21e
    Nikolay Borisov 提交于
    Currently extent_readpages (called from btrfs_readpages) will always
    call __extent_readpages which tries to create contiguous range of pages
    and call __do_contiguous_readpages when such contiguous range is
    created.
    
    It turns out this is unnecessary due to the fact that generic MM code
    always calls filesystem's ->readpages callback (btrfs_readpages in
    this case) with already contiguous pages. Armed with this knowledge it's
    possible to simplify extent_readpages by eliminating the call to
    __extent_readpages and directly calling contiguous_readpages.
    
    The only edge case that needs to be handled is when
    add_to_page_cache_lru fails. This is easy as all that is needed is to
    submit whatever is the number of pages successfully added to the lru.
    This can happen when the page is already in the range, so it does not
    need to be read again, and we can't do anything else in case of other
    errors.
    Signed-off-by: NNikolay Borisov <nborisov@suse.com>
    Reviewed-by: NDavid Sterba <dsterba@suse.com>
    Signed-off-by: NDavid Sterba <dsterba@suse.com>
    e65ef21e
extent_io.c 148.1 KB