iPrecalculate discriminator - 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 5f4ef6bbdd11dbb7469365a3f244789e4ea15013 /scm/dedup/commit/5f4ef6bbdd11dbb7469365a3f244789e4ea15013.gph bitreich.org 70 1parent 5e1aa604d5f99e97f55d41dd0324cec8b4badd5b /scm/dedup/commit/5e1aa604d5f99e97f55d41dd0324cec8b4badd5b.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Fri, 22 Feb 2019 14:00:37 +0000 Err bitreich.org 70 i Err bitreich.org 70 iPrecalculate discriminator Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M chunker.c | 10 +++++----- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 5 insertions(+), 5 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/chunker.c b/chunker.c /scm/dedup/file/chunker.c.gph bitreich.org 70 i@@ -12,6 +12,7 @@ struct chunker { Err bitreich.org 70 i size_t cap; Err bitreich.org 70 i size_t rpos; Err bitreich.org 70 i size_t wpos; Err bitreich.org 70 i+ size_t discr; Err bitreich.org 70 i int fd; Err bitreich.org 70 i }; Err bitreich.org 70 i Err bitreich.org 70 i@@ -22,15 +23,13 @@ calc_discr(size_t avg) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static int Err bitreich.org 70 i-match_pattern(size_t chunk_size, uint32_t fp) Err bitreich.org 70 i+match_pattern(struct chunker *chunker, size_t chunk_size, uint32_t fp) Err bitreich.org 70 i { Err bitreich.org 70 i- size_t discr = calc_discr(BLKSIZE_AVG); Err bitreich.org 70 i- Err bitreich.org 70 i if (chunk_size >= BLKSIZE_MAX) Err bitreich.org 70 i return 1; Err bitreich.org 70 i if (chunk_size < BLKSIZE_MIN) Err bitreich.org 70 i return 0; Err bitreich.org 70 i- return (fp % discr) == discr - 1; Err bitreich.org 70 i+ return (fp % chunker->discr) == chunker->discr - 1; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static size_t Err bitreich.org 70 i@@ -60,7 +59,7 @@ get_chunk_size(struct chunker *chunker) Err bitreich.org 70 i if (i > 0) Err bitreich.org 70 i fp = buzh_update(fp, bp[i - 1], bp[chunk_size - 1], Err bitreich.org 70 i WINSIZE); Err bitreich.org 70 i- if (match_pattern(chunk_size, fp) == 1) Err bitreich.org 70 i+ if (match_pattern(chunker, chunk_size, fp) == 1) Err bitreich.org 70 i return chunk_size; Err bitreich.org 70 i } Err bitreich.org 70 i return chunk_size; Err bitreich.org 70 i@@ -82,6 +81,7 @@ alloc_chunker(size_t cap, int fd) Err bitreich.org 70 i chunker->rpos = 0; Err bitreich.org 70 i chunker->wpos = 0; Err bitreich.org 70 i chunker->fd = fd; Err bitreich.org 70 i+ chunker->discr = calc_discr(BLKSIZE_AVG); Err bitreich.org 70 i Err bitreich.org 70 i return chunker; Err bitreich.org 70 i } Err bitreich.org 70 .