iCheck {compr,hash}_init() for failures - 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 738efabad162925277a2e7bb809ea127fd75d497 /scm/dedup/commit/738efabad162925277a2e7bb809ea127fd75d497.gph bitreich.org 70 1parent 4a21ac05f96b79113658a5adc1c04bde99bd8118 /scm/dedup/commit/4a21ac05f96b79113658a5adc1c04bde99bd8118.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Wed, 10 Apr 2019 13:48:52 +0100 Err bitreich.org 70 i Err bitreich.org 70 iCheck {compr,hash}_init() for failures Err bitreich.org 70 i Err bitreich.org 70 iThis can happen if an old version of dedup is used on a new store that Err bitreich.org 70 iuses newer compression/hash algorithms. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M dedup.c | 21 ++++++++++++++------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 14 insertions(+), 7 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@@ -109,7 +109,8 @@ hash_snap(struct snap *snap, uint8_t *md) Err bitreich.org 70 i struct hash_ctx ctx; Err bitreich.org 70 i uint64_t i; Err bitreich.org 70 i Err bitreich.org 70 i- hash_init(&ctx, hash_algo, MD_SIZE); Err bitreich.org 70 i+ if (hash_init(&ctx, hash_algo, MD_SIZE) < 0) Err bitreich.org 70 i+ errx(1, "hash_init failed"); Err bitreich.org 70 i for (i = 0; i < snap->nr_blk_descs; i++) { Err bitreich.org 70 i struct blk_desc *blk_desc; Err bitreich.org 70 i Err bitreich.org 70 i@@ -184,7 +185,8 @@ hash_blk(uint8_t *buf, size_t size, uint8_t *md) Err bitreich.org 70 i { Err bitreich.org 70 i struct hash_ctx ctx; Err bitreich.org 70 i Err bitreich.org 70 i- hash_init(&ctx, hash_algo, MD_SIZE); Err bitreich.org 70 i+ if (hash_init(&ctx, hash_algo, MD_SIZE) < 0) Err bitreich.org 70 i+ errx(1, "hash_init failed"); Err bitreich.org 70 i hash_update(&ctx, buf, size); Err bitreich.org 70 i hash_final(&ctx, md, MD_SIZE); Err bitreich.org 70 i } Err bitreich.org 70 i@@ -222,7 +224,8 @@ dedup_chunk(struct snap *snap, uint8_t *chunkp, size_t chunk_size) Err bitreich.org 70 i uint8_t *compr_buf; Err bitreich.org 70 i size_t n, csize; Err bitreich.org 70 i Err bitreich.org 70 i- compr_init(&ctx, compr_algo); Err bitreich.org 70 i+ if (compr_init(&ctx, compr_algo) < 0) Err bitreich.org 70 i+ errx(1, "compr_init failed"); Err bitreich.org 70 i csize = compr_size(&ctx, BLKSIZE_MAX); Err bitreich.org 70 i compr_buf = alloc_buf(csize); Err bitreich.org 70 i Err bitreich.org 70 i@@ -306,7 +309,8 @@ extract(struct snap *snap, void *arg) Err bitreich.org 70 i if (memcmp(snap->md, args->md, sizeof(snap->md)) != 0) Err bitreich.org 70 i return WALK_CONTINUE; Err bitreich.org 70 i Err bitreich.org 70 i- compr_init(&ctx, compr_algo); Err bitreich.org 70 i+ if (compr_init(&ctx, compr_algo) < 0) Err bitreich.org 70 i+ errx(1, "compr_init failed"); Err bitreich.org 70 i buf[0] = alloc_buf(BLKSIZE_MAX); Err bitreich.org 70 i buf[1] = alloc_buf(compr_size(&ctx, BLKSIZE_MAX)); Err bitreich.org 70 i for (i = 0; i < snap->nr_blk_descs; i++) { Err bitreich.org 70 i@@ -344,7 +348,8 @@ check_snap(struct snap *snap, void *arg) Err bitreich.org 70 i fputc('\n', stderr); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i- compr_init(&ctx, compr_algo); Err bitreich.org 70 i+ if (compr_init(&ctx, compr_algo) < 0) Err bitreich.org 70 i+ errx(1, "compr_init failed"); Err bitreich.org 70 i buf = alloc_buf(compr_size(&ctx, BLKSIZE_MAX)); Err bitreich.org 70 i for (i = 0; i < snap->nr_blk_descs; i++) { Err bitreich.org 70 i uint8_t md[MD_SIZE]; Err bitreich.org 70 i@@ -382,7 +387,8 @@ build_icache(struct snap *snap, void *arg) Err bitreich.org 70 i uint8_t *buf; Err bitreich.org 70 i uint64_t i; Err bitreich.org 70 i Err bitreich.org 70 i- compr_init(&ctx, compr_algo); Err bitreich.org 70 i+ if (compr_init(&ctx, compr_algo) < 0) Err bitreich.org 70 i+ errx(1, "compr_init failed"); Err bitreich.org 70 i buf = alloc_buf(compr_size(&ctx, BLKSIZE_MAX)); Err bitreich.org 70 i for (i = 0; i < snap->nr_blk_descs; i++) { Err bitreich.org 70 i struct blk_desc *blk_desc; Err bitreich.org 70 i@@ -481,7 +487,8 @@ init_snap_hdr(void) Err bitreich.org 70 i { Err bitreich.org 70 i struct compr_ctx ctx; Err bitreich.org 70 i Err bitreich.org 70 i- compr_init(&ctx, compr_algo); Err bitreich.org 70 i+ if (compr_init(&ctx, compr_algo) < 0) Err bitreich.org 70 i+ errx(1, "compr_init failed"); Err bitreich.org 70 i snap_hdr.flags = (VER_MAJ << VER_MAJ_SHIFT) | VER_MIN; Err bitreich.org 70 i snap_hdr.size = SNAP_HDR_SIZE; Err bitreich.org 70 i snap_hdr.st.min_blk_size = compr_size(&ctx, BLKSIZE_MAX); Err bitreich.org 70 .