Pass chunker params from caller - dedup - deduplicating backup program HTML git clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit ba61c65bb274657b7ea643de789db2a24ea836f8 DIR parent 1b1447f899bb2dc4b78ec0b915c71343009ca9c5 HTML Author: sin <sin@2f30.org> Date: Sat, 9 Mar 2019 22:15:26 +0000 Pass chunker params from caller Diffstat: M chunker.c | 18 +++++++++--------- M dedup.c | 3 ++- M dedup.h | 4 +++- 3 files changed, 14 insertions(+), 11 deletions(-) --- DIR diff --git a/chunker.c b/chunker.c @@ -12,7 +12,6 @@ struct chunker { uint8_t *buf; int fd; - size_t cap; size_t rpos; size_t wpos; size_t min_size; @@ -131,7 +130,8 @@ get_chunk_size(struct chunker *chunker) } struct chunker * -alloc_chunker(int fd, size_t cap) +alloc_chunker(int fd, size_t min_size, size_t max_size, + size_t mask, size_t win_size) { struct chunker *chunker; @@ -139,15 +139,15 @@ alloc_chunker(int fd, size_t cap) if (chunker == NULL) err(1, "calloc"); - chunker->buf = calloc(1, cap); + chunker->buf = calloc(1, max_size); if (chunker->buf == NULL) err(1, "calloc"); + chunker->fd = fd; - chunker->cap = cap; - chunker->min_size = BLKSIZE_MIN; - chunker->max_size = BLKSIZE_MAX; - chunker->mask = HASHMASK_BITS; - chunker->win_size = WINSIZE; + chunker->min_size = min_size; + chunker->max_size = max_size; + chunker->mask = mask; + chunker->win_size = win_size; return chunker; } @@ -166,7 +166,7 @@ fill_chunker(struct chunker *chunker) ssize_t n; bp = &chunker->buf[chunker->wpos]; - n = xread(chunker->fd, bp, chunker->cap - chunker->wpos); + n = xread(chunker->fd, bp, chunker->max_size - chunker->wpos); chunker->wpos += n; return chunker->wpos; } DIR diff --git a/dedup.c b/dedup.c @@ -233,7 +233,8 @@ dedup(int fd, char *msg) ssize_t n; snap = alloc_snap(); - chunker = alloc_chunker(fd, BLKSIZE_MAX); + chunker = alloc_chunker(fd, BLKSIZE_MIN, BLKSIZE_MAX, + HASHMASK_BITS, WINSIZE); SHA256_Init(&ctx); while ((n = fill_chunker(chunker)) > 0) { DIR diff --git a/dedup.h b/dedup.h @@ -77,7 +77,9 @@ void add_cache_entry(struct cache *cache, struct blk_desc *desc); int lookup_cache_entry(struct cache *cache, struct blk_desc *desc); /* chunker.c */ -struct chunker *alloc_chunker(int fd, size_t cap); +struct chunker * +alloc_chunker(int fd, size_t min_size, size_t max_size, + size_t mask, size_t win_size); void free_chunker(struct chunker *chunker); ssize_t fill_chunker(struct chunker *chunker); uint8_t *get_chunk(struct chunker *chunker, size_t *chunk_size);