iReflect hash type in the block descriptor type - 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 bfeed4a4f620d817f12f6f3d11043c06f1c53b80 /scm/dedup/commit/bfeed4a4f620d817f12f6f3d11043c06f1c53b80.gph bitreich.org 70 1parent d6d133da1f296f09aa158c4e7ab40824e2dbfc19 /scm/dedup/commit/d6d133da1f296f09aa158c4e7ab40824e2dbfc19.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Wed, 1 May 2019 13:45:54 +0100 Err bitreich.org 70 i Err bitreich.org 70 iReflect hash type in the block descriptor type Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M bstorage.c | 21 ++++++++++++--------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 12 insertions(+), 9 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/bstorage.c b/bstorage.c /scm/dedup/file/bstorage.c.gph bitreich.org 70 i@@ -40,7 +40,8 @@ Err bitreich.org 70 i Err bitreich.org 70 i #define BHDRMAGIC "DEDUPDIDUPDIDUP" Err bitreich.org 70 i #define NBHDRMAGIC sizeof(BHDRMAGIC) Err bitreich.org 70 i-#define BDTYPE 0x100 Err bitreich.org 70 i+#define BD2BTYPE 0x100 Err bitreich.org 70 i+#define BD2STYPE 0x101 Err bitreich.org 70 i Err bitreich.org 70 i #define BHDRSIZE (NBHDRMAGIC + 8 + 8) Err bitreich.org 70 i #define BDSIZE (8 + 8 + 8 + 8 + (MDSIZE)) Err bitreich.org 70 i@@ -242,7 +243,7 @@ loadbd(struct sctx *sctx) Err bitreich.org 70 i return -1; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i- if (bd->type != BDTYPE) { Err bitreich.org 70 i+ if (bd->type != BD2BTYPE && bd->type != BD2STYPE) { Err bitreich.org 70 i free(bd); Err bitreich.org 70 i return -1; Err bitreich.org 70 i } Err bitreich.org 70 i@@ -330,8 +331,10 @@ bscreat(struct bctx *bctx, char *path, int mode, struct bparam *bpar) Err bitreich.org 70 i /* Set hash type */ Err bitreich.org 70 i if (strcmp(bpar->halgo, "blake2b") == 0) { Err bitreich.org 70 i bhdr->flags |= HBLAKE2BTYPE << HALGOSHIFT; Err bitreich.org 70 i+ sctx->type = BD2BTYPE; Err bitreich.org 70 i } else if (strcmp(bpar->halgo, "blake2s") == 0) { Err bitreich.org 70 i bhdr->flags |= HBLAKE2STYPE << HALGOSHIFT; Err bitreich.org 70 i+ sctx->type = BD2STYPE; Err bitreich.org 70 i } else { Err bitreich.org 70 i free(sctx); Err bitreich.org 70 i close(fd); Err bitreich.org 70 i@@ -339,7 +342,6 @@ bscreat(struct bctx *bctx, char *path, int mode, struct bparam *bpar) Err bitreich.org 70 i } Err bitreich.org 70 i bhdr->nbd = 0; Err bitreich.org 70 i sctx->fd = fd; Err bitreich.org 70 i- sctx->type = (bhdr->flags >> HALGOSHIFT) & HALGOMASK; Err bitreich.org 70 i Err bitreich.org 70 i if (packbhdr(fd, bhdr) < 0) { Err bitreich.org 70 i free(sctx); Err bitreich.org 70 i@@ -422,9 +424,11 @@ bsopen(struct bctx *bctx, char *path, int flags, int mode, struct bparam *bpar) Err bitreich.org 70 i switch (halgo) { Err bitreich.org 70 i case HBLAKE2BTYPE: Err bitreich.org 70 i bpar->halgo = "blake2b"; Err bitreich.org 70 i+ sctx->type = BD2BTYPE; Err bitreich.org 70 i break; Err bitreich.org 70 i case HBLAKE2STYPE: Err bitreich.org 70 i bpar->halgo = "blake2s"; Err bitreich.org 70 i+ sctx->type = BD2STYPE; Err bitreich.org 70 i break; Err bitreich.org 70 i default: Err bitreich.org 70 i free(sctx); Err bitreich.org 70 i@@ -434,7 +438,6 @@ bsopen(struct bctx *bctx, char *path, int flags, int mode, struct bparam *bpar) Err bitreich.org 70 i Err bitreich.org 70 i sctx->fd = fd; Err bitreich.org 70 i sctx->rdonly = flags == O_RDONLY; Err bitreich.org 70 i- sctx->type = halgo; Err bitreich.org 70 i Err bitreich.org 70 i if (initbdcache(sctx) < 0) { Err bitreich.org 70 i free(sctx); Err bitreich.org 70 i@@ -456,11 +459,11 @@ bsput(struct bctx *bctx, void *buf, size_t n, unsigned char *md) Err bitreich.org 70 i sctx = bctx->sctx; Err bitreich.org 70 i Err bitreich.org 70 i switch (sctx->type) { Err bitreich.org 70 i- case HBLAKE2BTYPE: Err bitreich.org 70 i+ case BD2BTYPE: Err bitreich.org 70 i if (b2bhash(buf, n, key.md) < 0) Err bitreich.org 70 i return -1; Err bitreich.org 70 i break; Err bitreich.org 70 i- case HBLAKE2STYPE: Err bitreich.org 70 i+ case BD2STYPE: Err bitreich.org 70 i if (b2shash(buf, n, key.md) < 0) Err bitreich.org 70 i return -1; Err bitreich.org 70 i break; Err bitreich.org 70 i@@ -494,7 +497,7 @@ bsput(struct bctx *bctx, void *buf, size_t n, unsigned char *md) Err bitreich.org 70 i bd = calloc(1, sizeof(*bd)); Err bitreich.org 70 i if (bd == NULL) Err bitreich.org 70 i return -1; Err bitreich.org 70 i- bd->type = BDTYPE; Err bitreich.org 70 i+ bd->type = sctx->type; Err bitreich.org 70 i bd->offset = offs + BDSIZE; Err bitreich.org 70 i bd->size = n; Err bitreich.org 70 i bd->refcnt = 1; Err bitreich.org 70 i@@ -640,13 +643,13 @@ bscheck(struct bctx *bctx, unsigned char *md) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i switch (sctx->type) { Err bitreich.org 70 i- case HBLAKE2BTYPE: Err bitreich.org 70 i+ case BD2BTYPE: Err bitreich.org 70 i if (b2bhash(buf, bd->size, key.md) < 0) { Err bitreich.org 70 i free(buf); Err bitreich.org 70 i return -1; Err bitreich.org 70 i } Err bitreich.org 70 i break; Err bitreich.org 70 i- case HBLAKE2STYPE: Err bitreich.org 70 i+ case BD2STYPE: Err bitreich.org 70 i if (b2shash(buf, bd->size, key.md) < 0) { Err bitreich.org 70 i free(buf); Err bitreich.org 70 i return -1; Err bitreich.org 70 .