• Geert Uytterhoeven's avatar
    crypto: compress - Add pcomp interface · a1d2f095
    Geert Uytterhoeven authored
    The current "comp" crypto interface supports one-shot (de)compression only,
    i.e. the whole data buffer to be (de)compressed must be passed at once, and
    the whole (de)compressed data buffer will be received at once.
    In several use-cases (e.g. compressed file systems that store files in big
    compressed blocks), this workflow is not suitable.
    Furthermore, the "comp" type doesn't provide for the configuration of
    (de)compression parameters, and always allocates workspace memory for both
    compression and decompression, which may waste memory.
    
    To solve this, add a "pcomp" partial (de)compression interface that provides
    the following operations:
      - crypto_compress_{init,update,final}() for compression,
      - crypto_decompress_{init,update,final}() for decompression,
      - crypto_{,de}compress_setup(), to configure (de)compression parameters
        (incl. allocating workspace memory).
    
    The (de)compression methods take a struct comp_request, which was mimicked
    after the z_stream object in zlib, and contains buffer pointer and length
    pairs for input and output.
    
    The setup methods take an opaque parameter pointer and length pair. Parameters
    are supposed to be encoded using netlink attributes, whose meanings depend on
    the actual (name of the) (de)compression algorithm.
    Signed-off-by: default avatarGeert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    a1d2f095
pcompress.c 2.52 KB