• Sergey Senozhatsky's avatar
    zram: use crypto api to check alg availability · 415403be
    Sergey Senozhatsky authored
    There is no way to get a string with all the crypto comp algorithms
    supported by the crypto comp engine, so we need to maintain our own
    backends list.  At the same time we additionally need to use
    crypto_has_comp() to make sure that the user has requested a compression
    algorithm that is recognized by the crypto comp engine.  Relying on
    /proc/crypto is not an options here, because it does not show
    not-yet-inserted compression modules.
    
    Example:
    
     modprobe zram
     cat /proc/crypto | grep -i lz4
     modprobe lz4
     cat /proc/crypto | grep -i lz4
    name         : lz4
    driver       : lz4-generic
    module       : lz4
    
    So the user can't tell exactly if the lz4 is really supported from
    /proc/crypto output, unless someone or something has loaded it.
    
    This patch also adds crypto_has_comp() to zcomp_available_show().  We
    store all the compression algorithms names in zcomp's `backends' array,
    regardless the CONFIG_CRYPTO_FOO configuration, but show only those that
    are also supported by crypto engine.  This helps user to know the exact
    list of compression algorithms that can be used.
    
    Example:
      module lz4 is not loaded yet, but is supported by the crypto
      engine. /proc/crypto has no information on this module, while
      zram's `comp_algorithm' lists it:
    
     cat /proc/crypto | grep -i lz4
    
     cat /sys/block/zram0/comp_algorithm
    [lzo] lz4 deflate lz4hc 842
    
    We still use the `backends' array to determine if the requested
    compression backend is known to crypto api.  This array, however, may not
    contain some entries, therefore as the last step we call crypto_has_comp()
    function which attempts to insmod the requested compression algorithm to
    determine if crypto api supports it.  The advantage of this method is that
    now we permit the usage of out-of-tree crypto compression modules
    (implementing S/W or H/W compression).
    
    [sergey.senozhatsky@gmail.com: zram-use-crypto-api-to-check-alg-availability-v3]
      Link: http://lkml.kernel.org/r/20160604024902.11778-4-sergey.senozhatsky@gmail.com
    Link: http://lkml.kernel.org/r/20160531122017.2878-5-sergey.senozhatsky@gmail.comSigned-off-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Acked-by: default avatarMinchan Kim <minchan@kernel.org>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Signed-off-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    415403be
zram_drv.c 35.1 KB