iAdd a compr_final() hook - 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 36f8eba403de0699cb89e68a40116aa0789ca5dc /scm/dedup/commit/36f8eba403de0699cb89e68a40116aa0789ca5dc.gph bitreich.org 70 1parent 96025603520557acbba2313f76e5f436449ff68a /scm/dedup/commit/96025603520557acbba2313f76e5f436449ff68a.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Sun, 7 Apr 2019 13:33:32 +0100 Err bitreich.org 70 i Err bitreich.org 70 iAdd a compr_final() hook Err bitreich.org 70 i Err bitreich.org 70 iThis may be needed in the future to deallocate resources. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M compress.c | 23 +++++++++++++++++++++++ Err bitreich.org 70 i M dedup.c | 5 +++++ Err bitreich.org 70 i M dedup.h | 1 + Err bitreich.org 70 i Err bitreich.org 70 i3 files changed, 29 insertions(+), 0 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/compress.c b/compress.c /scm/dedup/file/compress.c.gph bitreich.org 70 i@@ -16,6 +16,7 @@ static size_t none_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 none_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 none_final(struct compr_ctx *ctx); Err bitreich.org 70 i Err bitreich.org 70 i static int lz4_init(struct compr_ctx *ctx); Err bitreich.org 70 i static size_t lz4_size(struct compr_ctx *ctx, size_t n); Err bitreich.org 70 i@@ -23,6 +24,7 @@ static size_t lz4_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 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 struct compr_ops { Err bitreich.org 70 i int (*init)(struct compr_ctx *ctx); Err bitreich.org 70 i@@ -31,18 +33,21 @@ static struct compr_ops { Err bitreich.org 70 i size_t insize, size_t outsize); Err bitreich.org 70 i size_t (*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+ int (*final)(struct compr_ctx *ctx); Err bitreich.org 70 i } comprs[NR_COMPRS] = { Err bitreich.org 70 i { Err bitreich.org 70 i .init = none_init, Err bitreich.org 70 i .size = none_size, Err bitreich.org 70 i .compr = none_compr, Err bitreich.org 70 i .decompr = none_decompr, Err bitreich.org 70 i+ .final = none_final, Err bitreich.org 70 i }, Err bitreich.org 70 i { Err bitreich.org 70 i .init = lz4_init, Err bitreich.org 70 i .size = lz4_size, Err bitreich.org 70 i .compr = lz4_compr, 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 Err bitreich.org 70 i@@ -92,6 +97,12 @@ none_decompr(struct compr_ctx *ctx, const void *in, void *out, Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static int Err bitreich.org 70 i+none_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+static int Err bitreich.org 70 i lz4_init(struct compr_ctx *ctx) Err bitreich.org 70 i { Err bitreich.org 70 i return 0; Err bitreich.org 70 i@@ -129,6 +140,12 @@ lz4_decompr(struct compr_ctx *ctx, const void *in, void *out, 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+lz4_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 i@@ -160,6 +177,12 @@ decompr(struct compr_ctx *ctx, const void *in, void *out, Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i int Err bitreich.org 70 i+compr_final(struct compr_ctx *ctx) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ return (*ctx->ops->final)(ctx); Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+int Err bitreich.org 70 i compr_name2type(char *name) Err bitreich.org 70 i { Err bitreich.org 70 i struct algomap *algo; Err bitreich.org 70 1diff --git a/dedup.c b/dedup.c /scm/dedup/file/dedup.c.gph bitreich.org 70 i@@ -254,6 +254,7 @@ dedup_chunk(struct snap *snap, uint8_t *chunkp, size_t chunk_size) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i free(compr_buf); Err bitreich.org 70 i+ compr_final(&ctx); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i@@ -319,6 +320,7 @@ extract(struct snap *snap, void *arg) Err bitreich.org 70 i } Err bitreich.org 70 i free_buf(buf[1]); Err bitreich.org 70 i free_buf(buf[0]); Err bitreich.org 70 i+ compr_final(&ctx); Err bitreich.org 70 i args->ret = 0; Err bitreich.org 70 i return WALK_STOP; Err bitreich.org 70 i } Err bitreich.org 70 i@@ -369,6 +371,7 @@ check_snap(struct snap *snap, void *arg) Err bitreich.org 70 i *ret = -1; Err bitreich.org 70 i } Err bitreich.org 70 i free_buf(buf); Err bitreich.org 70 i+ compr_final(&ctx); Err bitreich.org 70 i return WALK_CONTINUE; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -388,6 +391,7 @@ build_icache(struct snap *snap, void *arg) Err bitreich.org 70 i insert_icache(icache, blk_desc); Err bitreich.org 70 i } Err bitreich.org 70 i free(buf); Err bitreich.org 70 i+ compr_final(&ctx); Err bitreich.org 70 i return WALK_CONTINUE; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -481,6 +485,7 @@ init_snap_hdr(void) Err bitreich.org 70 i snap_hdr.flags = (VER_MAJ << VER_MAJ_SHIFT) | VER_MIN; Err bitreich.org 70 i snap_hdr.size = SNAP_HDR_SIZE; Err bitreich.org 70 i snap_hdr.st.min_blk_size = compr_size(&ctx, BLKSIZE_MAX); Err bitreich.org 70 i+ compr_final(&ctx); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 1diff --git a/dedup.h b/dedup.h /scm/dedup/file/dedup.h.gph bitreich.org 70 i@@ -108,6 +108,7 @@ size_t 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 size_t 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+int compr_final(struct compr_ctx *ctx); Err bitreich.org 70 i int compr_name2type(char *name); Err bitreich.org 70 i Err bitreich.org 70 i /* hash.c */ Err bitreich.org 70 .