• Gao Xiang's avatar
    erofs: get compression algorithms directly on mapping · 8f899262
    Gao Xiang authored
    Currently, z_erofs_map_blocks_iter() returns whether extents are
    compressed or not, and the decompression frontend gets the specific
    algorithms then.
    
    It works but not quite well in many aspests, for example:
     - The decompression frontend has to deal with whether extents are
       compressed or not again and lookup the algorithms if compressed.
       It's duplicated and too detailed about the on-disk mapping.
    
     - A new secondary compression head will be introduced later so that
       each file can have 2 compression algorithms at most for different
       type of data. It could increase the complexity of the decompression
       frontend if still handled in this way;
    
     - A new readmore decompression strategy will be introduced to get
       better performance for much bigger pcluster and lzma, which needs
       the specific algorithm in advance as well.
    
    Let's look up compression algorithms in z_erofs_map_blocks_iter()
    directly instead.
    
    Link: https://lore.kernel.org/r/20211008200839.24541-2-xiang@kernel.orgReviewed-by: default avatarChao Yu <chao@kernel.org>
    Reviewed-by: default avatarYue Hu <huyue2@yulong.com>
    Signed-off-by: default avatarGao Xiang <hsiangkao@linux.alibaba.com>
    8f899262
zdata.c 37.7 KB