1. 25 Feb, 2017 2 commits
    • Sven Schmidt's avatar
      lib/lz4: remove back-compat wrappers · 69c78423
      Sven Schmidt authored
      Remove the functions introduced as wrappers for providing backwards
      compatibility to the prior LZ4 version.  They're not needed anymore
      since there's no callers left.
      
      Link: http://lkml.kernel.org/r/1486321748-19085-6-git-send-email-4sschmid@informatik.uni-hamburg.deSigned-off-by: default avatarSven Schmidt <4sschmid@informatik.uni-hamburg.de>
      Cc: Bongkyu Kim <bongkyu.kim@lge.com>
      Cc: Rui Salvaterra <rsalvaterra@gmail.com>
      Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Herbert Xu <herbert@gondor.apana.org.au>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Anton Vorontsov <anton@enomsg.org>
      Cc: Colin Cross <ccross@android.com>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Tony Luck <tony.luck@intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      69c78423
    • Sven Schmidt's avatar
      lib: update LZ4 compressor module · 4e1a33b1
      Sven Schmidt authored
      Patch series "Update LZ4 compressor module", v7.
      
      This patchset updates the LZ4 compression module to a version based on
      LZ4 v1.7.3 allowing to use the fast compression algorithm aka LZ4 fast
      which provides an "acceleration" parameter as a tradeoff between high
      compression ratio and high compression speed.
      
      We want to use LZ4 fast in order to support compression in lustre and
      (mostly, based on that) investigate data reduction techniques in behalf
      of storage systems.
      
      Also, it will be useful for other users of LZ4 compression, as with LZ4
      fast it is possible to enable applications to use fast and/or high
      compression depending on the usecase.  For instance, ZRAM is offering a
      LZ4 backend and could benefit from an updated LZ4 in the kernel.
      
      LZ4 homepage: http://www.lz4.org/
      LZ4 source repository: https://github.com/lz4/lz4 Source version: 1.7.3
      
      Benchmark (taken from [1], Core i5-4300U @1.9GHz):
      ----------------|--------------|----------------|----------
      Compressor      | Compression  | Decompression  | Ratio
      ----------------|--------------|----------------|----------
      memcpy          |  4200 MB/s   |  4200 MB/s     | 1.000
      LZ4 fast 50     |  1080 MB/s   |  2650 MB/s     | 1.375
      LZ4 fast 17     |   680 MB/s   |  2220 MB/s     | 1.607
      LZ4 fast 5      |   475 MB/s   |  1920 MB/s     | 1.886
      LZ4 default     |   385 MB/s   |  1850 MB/s     | 2.101
      
      [1] http://fastcompression.blogspot.de/2015/04/sampling-or-faster-lz4.html
      
      [PATCH 1/5] lib: Update LZ4 compressor module
      [PATCH 2/5] lib/decompress_unlz4: Change module to work with new LZ4 module version
      [PATCH 3/5] crypto: Change LZ4 modules to work with new LZ4 module version
      [PATCH 4/5] fs/pstore: fs/squashfs: Change usage of LZ4 to work with new LZ4 version
      [PATCH 5/5] lib/lz4: Remove back-compat wrappers
      
      This patch (of 5):
      
      Update the LZ4 kernel module to LZ4 v1.7.3 by Yann Collet.  The kernel
      module is inspired by the previous work by Chanho Min.  The updated LZ4
      module will not break existing code since the patchset contains
      appropriate changes.
      
      API changes:
      
      New method LZ4_compress_fast which differs from the variant available in
      kernel by the new acceleration parameter, allowing to trade compression
      ratio for more compression speed and vice versa.
      
      LZ4_decompress_fast is the respective decompression method, featuring a
      very fast decoder (multiple GB/s per core), able to reach RAM speed in
      multi-core systems.  The decompressor allows to decompress data
      compressed with LZ4 fast as well as the LZ4 HC (high compression)
      algorithm.
      
      Also the useful functions LZ4_decompress_safe_partial and
      LZ4_compress_destsize were added.  The latter reverses the logic by
      trying to compress as much data as possible from source to dest while
      the former aims to decompress partial blocks of data.
      
      A bunch of streaming functions were also added which allow
      compressig/decompressing data in multiple steps (so called "streaming
      mode").
      
      The methods lz4_compress and lz4_decompress_unknownoutputsize are now
      known as LZ4_compress_default respectivley LZ4_decompress_safe.  The old
      methods will be removed since there's no callers left in the code.
      
      [arnd@arndb.de: fix KERNEL_LZ4 support]
        Link: http://lkml.kernel.org/r/20170208211946.2839649-1-arnd@arndb.de
      [akpm@linux-foundation.org: simplify]
      [akpm@linux-foundation.org: fix the simplification]
      [4sschmid@informatik.uni-hamburg.de: fix performance regressions]
        Link: http://lkml.kernel.org/r/1486898178-17125-2-git-send-email-4sschmid@informatik.uni-hamburg.de
      [4sschmid@informatik.uni-hamburg.de: v8]
        Link: http://lkml.kernel.org/r/1487182598-15351-2-git-send-email-4sschmid@informatik.uni-hamburg.de
      Link: http://lkml.kernel.org/r/1486321748-19085-2-git-send-email-4sschmid@informatik.uni-hamburg.deSigned-off-by: default avatarSven Schmidt <4sschmid@informatik.uni-hamburg.de>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: Bongkyu Kim <bongkyu.kim@lge.com>
      Cc: Rui Salvaterra <rsalvaterra@gmail.com>
      Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Herbert Xu <herbert@gondor.apana.org.au>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Anton Vorontsov <anton@enomsg.org>
      Cc: Colin Cross <ccross@android.com>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Tony Luck <tony.luck@intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4e1a33b1
  2. 23 Aug, 2013 1 commit
  3. 09 Jul, 2013 1 commit
    • Chanho Min's avatar
      lib: add lz4 compressor module · c72ac7a1
      Chanho Min authored
      This patchset is for supporting LZ4 compression and the crypto API using
      it.
      
      As shown below, the size of data is a little bit bigger but compressing
      speed is faster under the enabled unaligned memory access.  We can use
      lz4 de/compression through crypto API as well.  Also, It will be useful
      for another potential user of lz4 compression.
      
      lz4 Compression Benchmark:
      Compiler: ARM gcc 4.6.4
      ARMv7, 1 GHz based board
         Kernel: linux 3.4
         Uncompressed data Size: 101 MB
               Compressed Size  compression Speed
         LZO   72.1MB		  32.1MB/s, 33.0MB/s(UA)
         LZ4   75.1MB		  30.4MB/s, 35.9MB/s(UA)
         LZ4HC 59.8MB		   2.4MB/s,  2.5MB/s(UA)
      - UA: Unaligned memory Access support
      - Latest patch set for LZO applied
      
      This patch:
      
      Add support for LZ4 compression in the Linux Kernel.  LZ4 Compression APIs
      for kernel are based on LZ4 implementation by Yann Collet and were changed
      for kernel coding style.
      
      LZ4 homepage : http://fastcompression.blogspot.com/p/lz4.html
      LZ4 source repository : http://code.google.com/p/lz4/
      svn revision : r90
      
      Two APIs are added:
      
      lz4_compress() support basic lz4 compression whereas lz4hc_compress()
      support high compression or CPU performance get lower but compression
      ratio get higher.  Also, we require the pre-allocated working memory with
      the defined size and destination buffer must be allocated with the size of
      lz4_compressbound.
      
      [akpm@linux-foundation.org: make lz4_compresshcctx() static]
      Signed-off-by: default avatarChanho Min <chanho.min@lge.com>
      Cc: "Darrick J. Wong" <djwong@us.ibm.com>
      Cc: Bob Pearson <rpearson@systemfabricworks.com>
      Cc: Richard Weinberger <richard@nod.at>
      Cc: Herbert Xu <herbert@gondor.hengli.com.au>
      Cc: Yann Collet <yann.collet.73@gmail.com>
      Cc: Kyungsik Lee <kyungsik.lee@lge.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c72ac7a1