iFix bug - 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 4a9c691eb97725f224362ee65dc088f0260bc8b6 /scm/dedup/commit/4a9c691eb97725f224362ee65dc088f0260bc8b6.gph bitreich.org 70 1parent 6d6109301d421104c4d298b7d44914e45ad9e465 /scm/dedup/commit/6d6109301d421104c4d298b7d44914e45ad9e465.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Wed, 21 Mar 2018 13:21:41 +0000 Err bitreich.org 70 i Err bitreich.org 70 iFix bug Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M dedup.c | 14 +++++++++----- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 9 insertions(+), 5 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@@ -148,8 +148,6 @@ hash_ent_add(unsigned char *md, uint64_t blkidx) Err bitreich.org 70 i memcpy(&hash_ent->cent.md, md, sizeof(hash_ent->cent.md)); Err bitreich.org 70 i hash_ent->cent.blkidx = blkidx; Err bitreich.org 70 i RB_INSERT(hash_tree, &hash_tree_head, hash_ent); Err bitreich.org 70 i- lseek(cfd, 0, SEEK_END); Err bitreich.org 70 i- xwrite(cfd, &hash_ent->cent, sizeof(hash_ent->cent)); Err bitreich.org 70 i return hash_ent; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -266,10 +264,13 @@ dedup(int fd) 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(&blk, &blkidx) == -1) { Err bitreich.org 70 i+ struct hash_ent *hash_ent; Err bitreich.org 70 i uint64_t nblks = storefile_nblks(); Err bitreich.org 70 i Err bitreich.org 70 i ent->blks[ent->nblks++] = nblks; Err bitreich.org 70 i- hash_ent_add(blk.md, nblks); Err bitreich.org 70 i+ hash_ent = hash_ent_add(blk.md, nblks); Err bitreich.org 70 i+ lseek(cfd, 0, SEEK_END); Err bitreich.org 70 i+ xwrite(cfd, &hash_ent->cent, sizeof(hash_ent->cent)); Err bitreich.org 70 i append_blk(&blk); Err bitreich.org 70 i } else { Err bitreich.org 70 i ent->blks[ent->nblks++] = blkidx; Err bitreich.org 70 i@@ -338,10 +339,12 @@ rebuild_cache(void) Err bitreich.org 70 i nblks = storefile_nblks(); Err bitreich.org 70 i lseek(cfd, 0, SEEK_SET); Err bitreich.org 70 i for (i = 0; i < nblks; i++) { Err bitreich.org 70 i+ struct hash_ent *hash_ent; Err bitreich.org 70 i struct blk blk; Err bitreich.org 70 i Err bitreich.org 70 i read_blk(&blk, i); Err bitreich.org 70 i- hash_ent_add(blk.md, i); Err bitreich.org 70 i+ hash_ent = hash_ent_add(blk.md, i); Err bitreich.org 70 i+ xwrite(cfd, &hash_ent->cent, sizeof(hash_ent->cent)); Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -451,8 +454,9 @@ list(void) Err bitreich.org 70 i for (i = 0; i < enthdr.nents; i++) { Err bitreich.org 70 i struct ent ent; Err bitreich.org 70 i Err bitreich.org 70 i- if (xread(ifd, &ent, sizeof(ent)) == 0) Err bitreich.org 70 i+ if (xread(ifd, &ent, sizeof(ent)) == 0) { Err bitreich.org 70 i errx(1, "unexpected EOF"); Err bitreich.org 70 i+ } Err bitreich.org 70 i dump_md(ent.md, sizeof(ent.md)); Err bitreich.org 70 i putchar('\n'); Err bitreich.org 70 i lseek(ifd, ent.nblks * sizeof(ent.blks[0]), SEEK_CUR); Err bitreich.org 70 .