• Gao Xiang's avatar
    erofs: DEFLATE compression support · ffa09b3b
    Gao Xiang authored
    Add DEFLATE compression as the 3rd supported algorithm.
    
    DEFLATE is a popular generic-purpose compression algorithm for quite
    long time (many advanced formats like gzip, zlib, zip, png are all
    based on that) as Apple documentation written "If you require
    interoperability with non-Apple devices, use COMPRESSION_ZLIB. [1]".
    
    Due to its popularity, there are several hardware on-market DEFLATE
    accelerators, such as (s390) DFLTCC, (Intel) IAA/QAT, (HiSilicon) ZIP
    accelerator, etc.  In addition, there are also several high-performence
    IP cores and even open-source FPGA approches available for DEFLATE.
    Therefore, it's useful to support DEFLATE compression in order to find
    a way to utilize these accelerators for asynchronous I/Os and get
    benefits from these later.
    
    Besides, it's a good choice to trade off between compression ratios
    and performance compared to LZ4 and LZMA.  The DEFLATE core format is
    simple as well as easy to understand, therefore the code size of its
    decompressor is small even for the bootloader use cases.  The runtime
    memory consumption is quite limited too (e.g. 32K + ~7K for each zlib
    stream).  As usual, EROFS ourperforms similar approaches too.
    
    Alternatively, DEFLATE could still be used for some specific files
    since EROFS supports multiple compression algorithms in one image.
    
    [1] https://developer.apple.com/documentation/compression/compression_algorithmReviewed-by: default avatarChao Yu <chao@kernel.org>
    Signed-off-by: default avatarGao Xiang <hsiangkao@linux.alibaba.com>
    Link: https://lore.kernel.org/r/20230810154859.118330-1-hsiangkao@linux.alibaba.com
    ffa09b3b
decompressor_deflate.c 6.33 KB