iUnbreak block descriptor configuration - 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 bdab7844c3c3299f59eadea85b6e709ab0acad86 /scm/dedup/commit/bdab7844c3c3299f59eadea85b6e709ab0acad86.gph bitreich.org 70 1parent 312b8de3f21fe167b82d288362442364c51a0431 /scm/dedup/commit/312b8de3f21fe167b82d288362442364c51a0431.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Wed, 20 Feb 2019 12:53:53 +0000 Err bitreich.org 70 i Err bitreich.org 70 iUnbreak block descriptor configuration Err bitreich.org 70 i Err bitreich.org 70 iIn case of a cache hit, the block descriptor was totally wrong. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M dedup.c | 22 ++++++++++++---------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 12 insertions(+), 10 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/dedup.c b/dedup.c /scm/dedup/file/dedup.c.gph bitreich.org 70 i@@ -448,14 +448,16 @@ append_blk(uint8_t *buf, struct bdescr *bdescr) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i int Err bitreich.org 70 i-lookup_blk(uint8_t *md) Err bitreich.org 70 i+lookup_bdescr(uint8_t *md, struct bdescr *bdescr) Err bitreich.org 70 i { Err bitreich.org 70 i struct cent *ent, key; Err bitreich.org 70 i Err bitreich.org 70 i memcpy(key.bdescr.md, md, sizeof(key.bdescr.md)); Err bitreich.org 70 i ent = RB_FIND(cache, &cache_head, &key); Err bitreich.org 70 i- if (ent != NULL) Err bitreich.org 70 i+ if (ent != NULL) { Err bitreich.org 70 i+ *bdescr = ent->bdescr; Err bitreich.org 70 i return 0; Err bitreich.org 70 i+ } Err bitreich.org 70 i return -1; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -488,22 +490,22 @@ dedup(int fd, char *msg) Err bitreich.org 70 i blksize = chunk_blk(inp, bufsize); Err bitreich.org 70 i csize = comp(inp, outp, blksize, comp_size(BLKSIZE)); Err bitreich.org 70 i Err bitreich.org 70 i- memcpy(bdescr.md, md, sizeof(bdescr)); Err bitreich.org 70 i- bdescr.offset = enthdr.store_size; Err bitreich.org 70 i- bdescr.size = csize; Err bitreich.org 70 i- Err bitreich.org 70 i- enthdr.st.comp_size += bdescr.size; Err bitreich.org 70 i+ enthdr.st.comp_size += csize; Err bitreich.org 70 i Err bitreich.org 70 i- hash_blk(outp, bdescr.size, bdescr.md); Err bitreich.org 70 i+ hash_blk(outp, csize, md); Err bitreich.org 70 i Err bitreich.org 70 i /* Calculate file hash one block at a time */ Err bitreich.org 70 i- SHA256_Update(&ctx, outp, bdescr.size); Err bitreich.org 70 i+ SHA256_Update(&ctx, outp, csize); Err bitreich.org 70 i Err bitreich.org 70 i ent = grow_ent(ent, ent->nblks + 1); Err bitreich.org 70 i Err bitreich.org 70 i- if (lookup_blk(bdescr.md) < 0) { Err bitreich.org 70 i+ if (lookup_bdescr(md, &bdescr) < 0) { Err bitreich.org 70 i struct cent *cent; Err bitreich.org 70 i Err bitreich.org 70 i+ memcpy(bdescr.md, md, sizeof(bdescr.md)); Err bitreich.org 70 i+ bdescr.offset = enthdr.store_size; Err bitreich.org 70 i+ bdescr.size = csize; Err bitreich.org 70 i+ Err bitreich.org 70 i /* Update index entry */ Err bitreich.org 70 i ent->bdescr[ent->nblks++] = bdescr; Err bitreich.org 70 i Err bitreich.org 70 .