iAdd support for snappy compressor/decompressor - dedup - deduplicating backup program Err bitreich.org 70 hgit clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ URL:git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ bitreich.org 70 1Log /scm/dedup/log.gph bitreich.org 70 1Files /scm/dedup/files.gph bitreich.org 70 1Refs /scm/dedup/refs.gph bitreich.org 70 1Tags /scm/dedup/tag bitreich.org 70 1README /scm/dedup/file/README.gph bitreich.org 70 1LICENSE /scm/dedup/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 573a013a9738a43524c0e5994245353b8bd4b564 /scm/dedup/commit/573a013a9738a43524c0e5994245353b8bd4b564.gph bitreich.org 70 1parent 2c9dc65a8287e67d92b8ce1aa87d205243aa9eeb /scm/dedup/commit/2c9dc65a8287e67d92b8ce1aa87d205243aa9eeb.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Wed, 10 Apr 2019 13:16:48 +0100 Err bitreich.org 70 i Err bitreich.org 70 iAdd support for snappy compressor/decompressor Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M CHANGELOG | 1 + Err bitreich.org 70 i M Makefile | 2 +- Err bitreich.org 70 i M README | 1 + Err bitreich.org 70 i M compress.c | 61 +++++++++++++++++++++++++++++++ Err bitreich.org 70 i M dedup.1 | 4 ++-- Err bitreich.org 70 i M dedup.h | 1 + Err bitreich.org 70 i Err bitreich.org 70 i6 files changed, 67 insertions(+), 3 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/CHANGELOG b/CHANGELOG /scm/dedup/file/CHANGELOG.gph bitreich.org 70 i@@ -4,6 +4,7 @@ Err bitreich.org 70 i ### Added Err bitreich.org 70 i - Support for blake2bp, which is parallel variant of blake2b. Err bitreich.org 70 i - Support for blake2s and blake2sp. Err bitreich.org 70 i+- Support for snappy compressor/decompressor. Err bitreich.org 70 i Err bitreich.org 70 i ## [0.9] - 2019-03-26 Err bitreich.org 70 i ### Added Err bitreich.org 70 1diff --git a/Makefile b/Makefile /scm/dedup/file/Makefile.gph bitreich.org 70 i@@ -55,7 +55,7 @@ DISTFILES = \ Err bitreich.org 70 i CFLAGS = -g -O2 -Wall $(OPENMPCFLAGS) Err bitreich.org 70 i CPPFLAGS = -I/usr/local/include -D_FILE_OFFSET_BITS=64 Err bitreich.org 70 i LDFLAGS = -L/usr/local/lib Err bitreich.org 70 i-LDLIBS = -llz4 $(OPENMPLDLIBS) Err bitreich.org 70 i+LDLIBS = -llz4 -lsnappy $(OPENMPLDLIBS) Err bitreich.org 70 i Err bitreich.org 70 i all: $(BIN) Err bitreich.org 70 i Err bitreich.org 70 1diff --git a/README b/README /scm/dedup/file/README.gph bitreich.org 70 i@@ -41,6 +41,7 @@ Dependencies Err bitreich.org 70 i ============ Err bitreich.org 70 i Err bitreich.org 70 i - liblz4 Err bitreich.org 70 i+ - snappy Err bitreich.org 70 i - libomp (optional, see config.mk) Err bitreich.org 70 i Err bitreich.org 70 i Contact Err bitreich.org 70 1diff --git a/compress.c b/compress.c /scm/dedup/file/compress.c.gph bitreich.org 70 i@@ -6,6 +6,7 @@ Err bitreich.org 70 i #include Err bitreich.org 70 i Err bitreich.org 70 i #include Err bitreich.org 70 i+#include Err bitreich.org 70 i Err bitreich.org 70 i #include "blake2.h" Err bitreich.org 70 i #include "dedup.h" Err bitreich.org 70 i@@ -26,6 +27,14 @@ static size_t lz4_decompr(struct compr_ctx *ctx, const void *in, void *out, Err bitreich.org 70 i size_t insize, size_t outsize); Err bitreich.org 70 i static int lz4_final(struct compr_ctx *ctx); Err bitreich.org 70 i Err bitreich.org 70 i+static int snappy_init(struct compr_ctx *ctx); Err bitreich.org 70 i+static size_t snappy_size(struct compr_ctx *ctx, size_t n); Err bitreich.org 70 i+static size_t snappy_compr(struct compr_ctx *ctx, const void *in, void *out, Err bitreich.org 70 i+ size_t insize, size_t outsize); Err bitreich.org 70 i+static size_t snappy_decompr(struct compr_ctx *ctx, const void *in, void *out, Err bitreich.org 70 i+ size_t insize, size_t outsize); Err bitreich.org 70 i+static int snappy_final(struct compr_ctx *ctx); Err bitreich.org 70 i+ Err bitreich.org 70 i static struct compr_ops { Err bitreich.org 70 i int (*init)(struct compr_ctx *ctx); Err bitreich.org 70 i size_t (*size)(struct compr_ctx *ctx, size_t n); Err bitreich.org 70 i@@ -49,6 +58,13 @@ static struct compr_ops { Err bitreich.org 70 i .decompr = lz4_decompr, Err bitreich.org 70 i .final = lz4_final, Err bitreich.org 70 i }, Err bitreich.org 70 i+ { Err bitreich.org 70 i+ .init = snappy_init, Err bitreich.org 70 i+ .size = snappy_size, Err bitreich.org 70 i+ .compr = snappy_compr, Err bitreich.org 70 i+ .decompr = snappy_decompr, Err bitreich.org 70 i+ .final = snappy_final, Err bitreich.org 70 i+ }, Err bitreich.org 70 i }; Err bitreich.org 70 i Err bitreich.org 70 i static struct algomap { Err bitreich.org 70 i@@ -57,6 +73,7 @@ static struct algomap { Err bitreich.org 70 i } algomap[] = { Err bitreich.org 70 i { .name = "none", .type = COMPR_NONE }, Err bitreich.org 70 i { .name = "lz4", .type = COMPR_LZ4 }, Err bitreich.org 70 i+ { .name = "snappy", .type = COMPR_SNAPPY }, Err bitreich.org 70 i { .name = NULL, }, Err bitreich.org 70 i }; Err bitreich.org 70 i Err bitreich.org 70 i@@ -138,6 +155,50 @@ lz4_final(struct compr_ctx *ctx) Err bitreich.org 70 i return 0; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+static int Err bitreich.org 70 i+snappy_init(struct compr_ctx *ctx) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+static size_t Err bitreich.org 70 i+snappy_size(struct compr_ctx *ctx, size_t n) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ return snappy_max_compressed_length(n); Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+static size_t Err bitreich.org 70 i+snappy_compr(struct compr_ctx *ctx, const void *in, void *out, Err bitreich.org 70 i+ size_t insize, size_t outsize) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ size_t n = outsize; Err bitreich.org 70 i+ snappy_status ret; Err bitreich.org 70 i+ Err bitreich.org 70 i+ ret = snappy_compress((char *)in, insize, (char *)out, &n); Err bitreich.org 70 i+ if (ret != SNAPPY_OK) Err bitreich.org 70 i+ errx(1, "snappy_compress failed: %d", ret); Err bitreich.org 70 i+ return n; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+static size_t Err bitreich.org 70 i+snappy_decompr(struct compr_ctx *ctx, const void *in, void *out, Err bitreich.org 70 i+ size_t insize, size_t outsize) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ size_t n = outsize; Err bitreich.org 70 i+ snappy_status ret; Err bitreich.org 70 i+ Err bitreich.org 70 i+ ret = snappy_uncompress((char *)in, insize, (char *)out, &n); Err bitreich.org 70 i+ if (ret != SNAPPY_OK) Err bitreich.org 70 i+ errx(1, "snappy_uncompress failed: %d", ret); Err bitreich.org 70 i+ return n; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+static int Err bitreich.org 70 i+snappy_final(struct compr_ctx *ctx) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i int Err bitreich.org 70 i compr_init(struct compr_ctx *ctx, int type) Err bitreich.org 70 i { Err bitreich.org 70 1diff --git a/dedup.1 b/dedup.1 /scm/dedup/file/dedup.1.gph bitreich.org 70 i@@ -1,4 +1,4 @@ Err bitreich.org 70 i-.Dd April 7, 2019 Err bitreich.org 70 i+.Dd April 10, 2019 Err bitreich.org 70 i .Dt DEDUP 1 Err bitreich.org 70 i .Os Err bitreich.org 70 i .Sh NAME Err bitreich.org 70 i@@ -38,7 +38,7 @@ By default blake2b is used. Err bitreich.org 70 i .It Fl Z Ar compressor Err bitreich.org 70 i The compressor function used to compress the blocks Err bitreich.org 70 i in the store. Err bitreich.org 70 i-The supported compressor functions are none and lz4. Err bitreich.org 70 i+The supported compressor functions are none, lz4 and snappy. Err bitreich.org 70 i This flag only has an effect when initializing the repository. Err bitreich.org 70 i By default lz4 is used. Err bitreich.org 70 i .It Fl c Err bitreich.org 70 1diff --git a/dedup.h b/dedup.h /scm/dedup/file/dedup.h.gph bitreich.org 70 i@@ -30,6 +30,7 @@ Err bitreich.org 70 i enum compr_algo { Err bitreich.org 70 i COMPR_NONE, Err bitreich.org 70 i COMPR_LZ4, Err bitreich.org 70 i+ COMPR_SNAPPY, Err bitreich.org 70 i NR_COMPRS, Err bitreich.org 70 i }; Err bitreich.org 70 i Err bitreich.org 70 .