iFactor out some more helpers - 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 a3b3fb6126e50d105436b50fc3c077d4e33f3959 /scm/dedup/commit/a3b3fb6126e50d105436b50fc3c077d4e33f3959.gph bitreich.org 70 1parent 6cb387cea51dc694f225ec04bdf1c5d02caf9dcb /scm/dedup/commit/6cb387cea51dc694f225ec04bdf1c5d02caf9dcb.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Thu, 18 Apr 2019 00:46:56 +0100 Err bitreich.org 70 i Err bitreich.org 70 iFactor out some more helpers Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M dcheck.c | 61 +++---------------------------- Err bitreich.org 70 i M dedup.h | 3 +++ Err bitreich.org 70 i M dinfo.c | 61 +++---------------------------- Err bitreich.org 70 i M dinit.c | 4 ++-- Err bitreich.org 70 i M dlist.c | 61 +++---------------------------- Err bitreich.org 70 i M dpack.c | 88 +++++-------------------------- Err bitreich.org 70 i M dunpack.c | 61 +++---------------------------- Err bitreich.org 70 i M utils.c | 51 +++++++++++++++++++++++++++++++ Err bitreich.org 70 i Err bitreich.org 70 i8 files changed, 89 insertions(+), 301 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/dcheck.c b/dcheck.c /scm/dedup/file/dcheck.c.gph bitreich.org 70 i@@ -193,59 +193,6 @@ walk_snap(int (*fn)(struct snap *, void *), void *arg) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i-match_ver(uint64_t v) Err bitreich.org 70 i-{ Err bitreich.org 70 i- uint8_t maj, min; Err bitreich.org 70 i- Err bitreich.org 70 i- min = v & VER_MIN_MASK; Err bitreich.org 70 i- maj = (v >> VER_MAJ_SHIFT) & VER_MAJ_MASK; Err bitreich.org 70 i- if (maj == VER_MAJ && min == VER_MIN) Err bitreich.org 70 i- return; Err bitreich.org 70 i- errx(1, "format version mismatch: expected %u.%u but got %u.%u", Err bitreich.org 70 i- VER_MAJ, VER_MIN, maj, min); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i-load_blk_hdr(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- uint64_t v; Err bitreich.org 70 i- Err bitreich.org 70 i- xlseek(sfd, 0, SEEK_SET); Err bitreich.org 70 i- read_blk_hdr(sfd, &blk_hdr); Err bitreich.org 70 i- match_ver(blk_hdr.flags); Err bitreich.org 70 i- Err bitreich.org 70 i- v = blk_hdr.flags >> COMPR_ALGO_SHIFT; Err bitreich.org 70 i- v &= COMPR_ALGO_MASK; Err bitreich.org 70 i- compr_algo = v; Err bitreich.org 70 i- Err bitreich.org 70 i- if (compr_algo < 0 || compr_algo >= NR_COMPRS) Err bitreich.org 70 i- errx(1, "unsupported compression algorithm: %d", compr_algo); Err bitreich.org 70 i- Err bitreich.org 70 i- if (verbose > 0) Err bitreich.org 70 i- fprintf(stderr, "Compression algorithm: %s\n", Err bitreich.org 70 i- compr_type2name(compr_algo)); Err bitreich.org 70 i- Err bitreich.org 70 i- v = blk_hdr.flags >> HASH_ALGO_SHIFT; Err bitreich.org 70 i- v &= HASH_ALGO_MASK; Err bitreich.org 70 i- hash_algo = v; Err bitreich.org 70 i- Err bitreich.org 70 i- if (hash_algo < 0 || hash_algo >= NR_HASHES) Err bitreich.org 70 i- errx(1, "unsupported hash algorithm: %d", hash_algo); Err bitreich.org 70 i- Err bitreich.org 70 i- if (verbose > 0) Err bitreich.org 70 i- fprintf(stderr, "Hash algorithm: %s\n", Err bitreich.org 70 i- hash_type2name(hash_algo)); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i-load_snap_hdr(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- xlseek(ifd, 0, SEEK_SET); Err bitreich.org 70 i- read_snap_hdr(ifd, &snap_hdr); Err bitreich.org 70 i- match_ver(snap_hdr.flags); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i init(void) Err bitreich.org 70 i { Err bitreich.org 70 i ifd = open(SNAPSF, O_RDONLY, 0600); Err bitreich.org 70 i@@ -260,15 +207,17 @@ init(void) Err bitreich.org 70 i flock(sfd, LOCK_NB | LOCK_EX) < 0) Err bitreich.org 70 i err(1, "flock"); Err bitreich.org 70 i Err bitreich.org 70 i- load_snap_hdr(); Err bitreich.org 70 i- load_blk_hdr(); Err bitreich.org 70 i+ xlseek(ifd, 0, SEEK_SET); Err bitreich.org 70 i+ load_snap_hdr(ifd, &snap_hdr); Err bitreich.org 70 i+ xlseek(sfd, 0, SEEK_SET); Err bitreich.org 70 i+ load_blk_hdr(sfd, &blk_hdr, &compr_algo, &hash_algo); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i term(void) Err bitreich.org 70 i { Err bitreich.org 70 i- close(sfd); Err bitreich.org 70 i close(ifd); Err bitreich.org 70 i+ close(sfd); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 1diff --git a/dedup.h b/dedup.h /scm/dedup/file/dedup.h.gph bitreich.org 70 i@@ -208,3 +208,6 @@ ssize_t xread(int fd, void *buf, size_t nbytes); Err bitreich.org 70 i ssize_t xwrite(int fd, const void *buf, size_t nbytes); Err bitreich.org 70 i void init_blk_hdr(struct blk_hdr *hdr, int compr_algo, int hash_algo); Err bitreich.org 70 i void init_snap_hdr(struct snap_hdr *hdr); Err bitreich.org 70 i+void match_ver(uint64_t v); Err bitreich.org 70 i+void load_blk_hdr(int fd, struct blk_hdr *hdr, int *compr_algo, int *hash_algo); Err bitreich.org 70 i+void load_snap_hdr(int fd, struct snap_hdr *hdr); Err bitreich.org 70 1diff --git a/dinfo.c b/dinfo.c /scm/dedup/file/dinfo.c.gph bitreich.org 70 i@@ -50,59 +50,6 @@ print_info(struct stats *st) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i-match_ver(uint64_t v) Err bitreich.org 70 i-{ Err bitreich.org 70 i- uint8_t maj, min; Err bitreich.org 70 i- Err bitreich.org 70 i- min = v & VER_MIN_MASK; Err bitreich.org 70 i- maj = (v >> VER_MAJ_SHIFT) & VER_MAJ_MASK; Err bitreich.org 70 i- if (maj == VER_MAJ && min == VER_MIN) Err bitreich.org 70 i- return; Err bitreich.org 70 i- errx(1, "format version mismatch: expected %u.%u but got %u.%u", Err bitreich.org 70 i- VER_MAJ, VER_MIN, maj, min); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i-load_blk_hdr(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- uint64_t v; Err bitreich.org 70 i- Err bitreich.org 70 i- xlseek(sfd, 0, SEEK_SET); Err bitreich.org 70 i- read_blk_hdr(sfd, &blk_hdr); Err bitreich.org 70 i- match_ver(blk_hdr.flags); Err bitreich.org 70 i- Err bitreich.org 70 i- v = blk_hdr.flags >> COMPR_ALGO_SHIFT; Err bitreich.org 70 i- v &= COMPR_ALGO_MASK; Err bitreich.org 70 i- compr_algo = v; Err bitreich.org 70 i- Err bitreich.org 70 i- if (compr_algo < 0 || compr_algo >= NR_COMPRS) Err bitreich.org 70 i- errx(1, "unsupported compression algorithm: %d", compr_algo); Err bitreich.org 70 i- Err bitreich.org 70 i- if (verbose > 0) Err bitreich.org 70 i- fprintf(stderr, "Compression algorithm: %s\n", Err bitreich.org 70 i- compr_type2name(compr_algo)); Err bitreich.org 70 i- Err bitreich.org 70 i- v = blk_hdr.flags >> HASH_ALGO_SHIFT; Err bitreich.org 70 i- v &= HASH_ALGO_MASK; Err bitreich.org 70 i- hash_algo = v; Err bitreich.org 70 i- Err bitreich.org 70 i- if (hash_algo < 0 || hash_algo >= NR_HASHES) Err bitreich.org 70 i- errx(1, "unsupported hash algorithm: %d", hash_algo); Err bitreich.org 70 i- Err bitreich.org 70 i- if (verbose > 0) Err bitreich.org 70 i- fprintf(stderr, "Hash algorithm: %s\n", Err bitreich.org 70 i- hash_type2name(hash_algo)); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i-load_snap_hdr(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- xlseek(ifd, 0, SEEK_SET); Err bitreich.org 70 i- read_snap_hdr(ifd, &snap_hdr); Err bitreich.org 70 i- match_ver(snap_hdr.flags); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i init(void) Err bitreich.org 70 i { Err bitreich.org 70 i ifd = open(SNAPSF, O_RDONLY, 0600); Err bitreich.org 70 i@@ -117,15 +64,17 @@ init(void) Err bitreich.org 70 i flock(sfd, LOCK_NB | LOCK_EX) < 0) Err bitreich.org 70 i err(1, "flock"); Err bitreich.org 70 i Err bitreich.org 70 i- load_snap_hdr(); Err bitreich.org 70 i- load_blk_hdr(); Err bitreich.org 70 i+ xlseek(ifd, 0, SEEK_SET); Err bitreich.org 70 i+ load_snap_hdr(ifd, &snap_hdr); Err bitreich.org 70 i+ xlseek(sfd, 0, SEEK_SET); Err bitreich.org 70 i+ load_blk_hdr(sfd, &blk_hdr, &compr_algo, &hash_algo); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i term(void) Err bitreich.org 70 i { Err bitreich.org 70 i- close(sfd); Err bitreich.org 70 i close(ifd); Err bitreich.org 70 i+ close(sfd); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 1diff --git a/dinit.c b/dinit.c /scm/dedup/file/dinit.c.gph bitreich.org 70 i@@ -57,11 +57,11 @@ term(void) Err bitreich.org 70 i xlseek(sfd, 0, SEEK_SET); Err bitreich.org 70 i write_blk_hdr(sfd, &blk_hdr); Err bitreich.org 70 i Err bitreich.org 70 i- fsync(sfd); Err bitreich.org 70 i fsync(ifd); Err bitreich.org 70 i+ fsync(sfd); Err bitreich.org 70 i Err bitreich.org 70 i- close(sfd); Err bitreich.org 70 i close(ifd); Err bitreich.org 70 i+ close(sfd); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 1diff --git a/dlist.c b/dlist.c /scm/dedup/file/dlist.c.gph bitreich.org 70 i@@ -112,59 +112,6 @@ walk_snap(int (*fn)(struct snap *, void *), void *arg) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i-match_ver(uint64_t v) Err bitreich.org 70 i-{ Err bitreich.org 70 i- uint8_t maj, min; Err bitreich.org 70 i- Err bitreich.org 70 i- min = v & VER_MIN_MASK; Err bitreich.org 70 i- maj = (v >> VER_MAJ_SHIFT) & VER_MAJ_MASK; Err bitreich.org 70 i- if (maj == VER_MAJ && min == VER_MIN) Err bitreich.org 70 i- return; Err bitreich.org 70 i- errx(1, "format version mismatch: expected %u.%u but got %u.%u", Err bitreich.org 70 i- VER_MAJ, VER_MIN, maj, min); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i-load_blk_hdr(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- uint64_t v; Err bitreich.org 70 i- Err bitreich.org 70 i- xlseek(sfd, 0, SEEK_SET); Err bitreich.org 70 i- read_blk_hdr(sfd, &blk_hdr); Err bitreich.org 70 i- match_ver(blk_hdr.flags); Err bitreich.org 70 i- Err bitreich.org 70 i- v = blk_hdr.flags >> COMPR_ALGO_SHIFT; Err bitreich.org 70 i- v &= COMPR_ALGO_MASK; Err bitreich.org 70 i- compr_algo = v; Err bitreich.org 70 i- Err bitreich.org 70 i- if (compr_algo < 0 || compr_algo >= NR_COMPRS) Err bitreich.org 70 i- errx(1, "unsupported compression algorithm: %d", compr_algo); Err bitreich.org 70 i- Err bitreich.org 70 i- if (verbose > 0) Err bitreich.org 70 i- fprintf(stderr, "Compression algorithm: %s\n", Err bitreich.org 70 i- compr_type2name(compr_algo)); Err bitreich.org 70 i- Err bitreich.org 70 i- v = blk_hdr.flags >> HASH_ALGO_SHIFT; Err bitreich.org 70 i- v &= HASH_ALGO_MASK; Err bitreich.org 70 i- hash_algo = v; Err bitreich.org 70 i- Err bitreich.org 70 i- if (hash_algo < 0 || hash_algo >= NR_HASHES) Err bitreich.org 70 i- errx(1, "unsupported hash algorithm: %d", hash_algo); Err bitreich.org 70 i- Err bitreich.org 70 i- if (verbose > 0) Err bitreich.org 70 i- fprintf(stderr, "Hash algorithm: %s\n", Err bitreich.org 70 i- hash_type2name(hash_algo)); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i-load_snap_hdr(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- xlseek(ifd, 0, SEEK_SET); Err bitreich.org 70 i- read_snap_hdr(ifd, &snap_hdr); Err bitreich.org 70 i- match_ver(snap_hdr.flags); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i init(void) Err bitreich.org 70 i { Err bitreich.org 70 i ifd = open(SNAPSF, O_RDONLY, 0600); Err bitreich.org 70 i@@ -179,15 +126,17 @@ init(void) Err bitreich.org 70 i flock(sfd, LOCK_NB | LOCK_EX) < 0) Err bitreich.org 70 i err(1, "flock"); Err bitreich.org 70 i Err bitreich.org 70 i- load_snap_hdr(); Err bitreich.org 70 i- load_blk_hdr(); Err bitreich.org 70 i+ xlseek(ifd, 0, SEEK_SET); Err bitreich.org 70 i+ load_snap_hdr(ifd, &snap_hdr); Err bitreich.org 70 i+ xlseek(sfd, 0, SEEK_SET); Err bitreich.org 70 i+ load_blk_hdr(sfd, &blk_hdr, &compr_algo, &hash_algo); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i term(void) Err bitreich.org 70 i { Err bitreich.org 70 i- close(sfd); Err bitreich.org 70 i close(ifd); Err bitreich.org 70 i+ close(sfd); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 1diff --git a/dpack.c b/dpack.c /scm/dedup/file/dpack.c.gph bitreich.org 70 i@@ -275,73 +275,6 @@ walk_snap(int (*fn)(struct snap *, void *), void *arg) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i-match_ver(uint64_t v) Err bitreich.org 70 i-{ Err bitreich.org 70 i- uint8_t maj, min; Err bitreich.org 70 i- Err bitreich.org 70 i- min = v & VER_MIN_MASK; Err bitreich.org 70 i- maj = (v >> VER_MAJ_SHIFT) & VER_MAJ_MASK; Err bitreich.org 70 i- if (maj == VER_MAJ && min == VER_MIN) Err bitreich.org 70 i- return; Err bitreich.org 70 i- errx(1, "format version mismatch: expected %u.%u but got %u.%u", Err bitreich.org 70 i- VER_MAJ, VER_MIN, maj, min); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i-load_blk_hdr(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- uint64_t v; Err bitreich.org 70 i- Err bitreich.org 70 i- xlseek(sfd, 0, SEEK_SET); Err bitreich.org 70 i- read_blk_hdr(sfd, &blk_hdr); Err bitreich.org 70 i- match_ver(blk_hdr.flags); Err bitreich.org 70 i- Err bitreich.org 70 i- v = blk_hdr.flags >> COMPR_ALGO_SHIFT; Err bitreich.org 70 i- v &= COMPR_ALGO_MASK; Err bitreich.org 70 i- compr_algo = v; Err bitreich.org 70 i- Err bitreich.org 70 i- if (compr_algo < 0 || compr_algo >= NR_COMPRS) Err bitreich.org 70 i- errx(1, "unsupported compression algorithm: %d", compr_algo); Err bitreich.org 70 i- Err bitreich.org 70 i- if (verbose > 0) Err bitreich.org 70 i- fprintf(stderr, "Compression algorithm: %s\n", Err bitreich.org 70 i- compr_type2name(compr_algo)); Err bitreich.org 70 i- Err bitreich.org 70 i- v = blk_hdr.flags >> HASH_ALGO_SHIFT; Err bitreich.org 70 i- v &= HASH_ALGO_MASK; Err bitreich.org 70 i- hash_algo = v; Err bitreich.org 70 i- Err bitreich.org 70 i- if (hash_algo < 0 || hash_algo >= NR_HASHES) Err bitreich.org 70 i- errx(1, "unsupported hash algorithm: %d", hash_algo); Err bitreich.org 70 i- Err bitreich.org 70 i- if (verbose > 0) Err bitreich.org 70 i- fprintf(stderr, "Hash algorithm: %s\n", Err bitreich.org 70 i- hash_type2name(hash_algo)); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i-save_blk_hdr(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- xlseek(sfd, 0, SEEK_SET); Err bitreich.org 70 i- write_blk_hdr(sfd, &blk_hdr); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i-load_snap_hdr(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- xlseek(ifd, 0, SEEK_SET); Err bitreich.org 70 i- read_snap_hdr(ifd, &snap_hdr); Err bitreich.org 70 i- match_ver(snap_hdr.flags); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i-save_snap_hdr(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- xlseek(ifd, 0, SEEK_SET); Err bitreich.org 70 i- write_snap_hdr(ifd, &snap_hdr); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i init(void) Err bitreich.org 70 i { Err bitreich.org 70 i ifd = open(SNAPSF, O_RDWR, 0600); Err bitreich.org 70 i@@ -356,8 +289,11 @@ init(void) Err bitreich.org 70 i flock(sfd, LOCK_NB | LOCK_EX) < 0) Err bitreich.org 70 i err(1, "flock"); Err bitreich.org 70 i Err bitreich.org 70 i- load_snap_hdr(); Err bitreich.org 70 i- load_blk_hdr(); Err bitreich.org 70 i+ Err bitreich.org 70 i+ xlseek(ifd, 0, SEEK_SET); Err bitreich.org 70 i+ load_snap_hdr(ifd, &snap_hdr); Err bitreich.org 70 i+ xlseek(sfd, 0, SEEK_SET); Err bitreich.org 70 i+ load_blk_hdr(sfd, &blk_hdr, &compr_algo, &hash_algo); Err bitreich.org 70 i Err bitreich.org 70 i icache = alloc_icache(); Err bitreich.org 70 i walk_snap(build_icache, NULL); Err bitreich.org 70 i@@ -366,16 +302,18 @@ init(void) Err bitreich.org 70 i static void Err bitreich.org 70 i term(void) Err bitreich.org 70 i { Err bitreich.org 70 i- free_icache(icache); Err bitreich.org 70 i- Err bitreich.org 70 i- save_blk_hdr(); Err bitreich.org 70 i- save_snap_hdr(); Err bitreich.org 70 i+ xlseek(ifd, 0, SEEK_SET); Err bitreich.org 70 i+ write_snap_hdr(ifd, &snap_hdr); Err bitreich.org 70 i+ xlseek(sfd, 0, SEEK_SET); Err bitreich.org 70 i+ write_blk_hdr(sfd, &blk_hdr); Err bitreich.org 70 i Err bitreich.org 70 i- fsync(sfd); Err bitreich.org 70 i fsync(ifd); Err bitreich.org 70 i+ fsync(sfd); Err bitreich.org 70 i Err bitreich.org 70 i- close(sfd); Err bitreich.org 70 i close(ifd); Err bitreich.org 70 i+ close(sfd); Err bitreich.org 70 i+ Err bitreich.org 70 i+ free_icache(icache); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 1diff --git a/dunpack.c b/dunpack.c /scm/dedup/file/dunpack.c.gph bitreich.org 70 i@@ -159,59 +159,6 @@ walk_snap(int (*fn)(struct snap *, void *), void *arg) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i-match_ver(uint64_t v) Err bitreich.org 70 i-{ Err bitreich.org 70 i- uint8_t maj, min; Err bitreich.org 70 i- Err bitreich.org 70 i- min = v & VER_MIN_MASK; Err bitreich.org 70 i- maj = (v >> VER_MAJ_SHIFT) & VER_MAJ_MASK; Err bitreich.org 70 i- if (maj == VER_MAJ && min == VER_MIN) Err bitreich.org 70 i- return; Err bitreich.org 70 i- errx(1, "format version mismatch: expected %u.%u but got %u.%u", Err bitreich.org 70 i- VER_MAJ, VER_MIN, maj, min); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i-load_blk_hdr(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- uint64_t v; Err bitreich.org 70 i- Err bitreich.org 70 i- xlseek(sfd, 0, SEEK_SET); Err bitreich.org 70 i- read_blk_hdr(sfd, &blk_hdr); Err bitreich.org 70 i- match_ver(blk_hdr.flags); Err bitreich.org 70 i- Err bitreich.org 70 i- v = blk_hdr.flags >> COMPR_ALGO_SHIFT; Err bitreich.org 70 i- v &= COMPR_ALGO_MASK; Err bitreich.org 70 i- compr_algo = v; Err bitreich.org 70 i- Err bitreich.org 70 i- if (compr_algo < 0 || compr_algo >= NR_COMPRS) Err bitreich.org 70 i- errx(1, "unsupported compression algorithm: %d", compr_algo); Err bitreich.org 70 i- Err bitreich.org 70 i- if (verbose > 0) Err bitreich.org 70 i- fprintf(stderr, "Compression algorithm: %s\n", Err bitreich.org 70 i- compr_type2name(compr_algo)); Err bitreich.org 70 i- Err bitreich.org 70 i- v = blk_hdr.flags >> HASH_ALGO_SHIFT; Err bitreich.org 70 i- v &= HASH_ALGO_MASK; Err bitreich.org 70 i- hash_algo = v; Err bitreich.org 70 i- Err bitreich.org 70 i- if (hash_algo < 0 || hash_algo >= NR_HASHES) Err bitreich.org 70 i- errx(1, "unsupported hash algorithm: %d", hash_algo); Err bitreich.org 70 i- Err bitreich.org 70 i- if (verbose > 0) Err bitreich.org 70 i- fprintf(stderr, "Hash algorithm: %s\n", Err bitreich.org 70 i- hash_type2name(hash_algo)); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i-load_snap_hdr(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- xlseek(ifd, 0, SEEK_SET); Err bitreich.org 70 i- read_snap_hdr(ifd, &snap_hdr); Err bitreich.org 70 i- match_ver(snap_hdr.flags); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i init(void) Err bitreich.org 70 i { Err bitreich.org 70 i ifd = open(SNAPSF, O_RDONLY, 0600); Err bitreich.org 70 i@@ -226,15 +173,17 @@ init(void) Err bitreich.org 70 i flock(sfd, LOCK_NB | LOCK_EX) < 0) Err bitreich.org 70 i err(1, "flock"); Err bitreich.org 70 i Err bitreich.org 70 i- load_snap_hdr(); Err bitreich.org 70 i- load_blk_hdr(); Err bitreich.org 70 i+ xlseek(ifd, 0, SEEK_SET); Err bitreich.org 70 i+ load_snap_hdr(ifd, &snap_hdr); Err bitreich.org 70 i+ xlseek(sfd, 0, SEEK_SET); Err bitreich.org 70 i+ load_blk_hdr(sfd, &blk_hdr, &compr_algo, &hash_algo); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i term(void) Err bitreich.org 70 i { Err bitreich.org 70 i- close(sfd); Err bitreich.org 70 i close(ifd); Err bitreich.org 70 i+ close(sfd); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 1diff --git a/utils.c b/utils.c /scm/dedup/file/utils.c.gph bitreich.org 70 i@@ -85,3 +85,54 @@ init_snap_hdr(struct snap_hdr *hdr) Err bitreich.org 70 i hdr->size = SNAP_HDR_SIZE; Err bitreich.org 70 i hdr->st.min_blk_size = UINT64_MAX; Err bitreich.org 70 i } Err bitreich.org 70 i+ Err bitreich.org 70 i+void Err bitreich.org 70 i+match_ver(uint64_t v) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ uint8_t maj, min; Err bitreich.org 70 i+ Err bitreich.org 70 i+ min = v & VER_MIN_MASK; Err bitreich.org 70 i+ maj = (v >> VER_MAJ_SHIFT) & VER_MAJ_MASK; Err bitreich.org 70 i+ if (maj == VER_MAJ && min == VER_MIN) Err bitreich.org 70 i+ return; Err bitreich.org 70 i+ errx(1, "format version mismatch: expected %u.%u but got %u.%u", Err bitreich.org 70 i+ VER_MAJ, VER_MIN, maj, min); Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+void Err bitreich.org 70 i+load_blk_hdr(int fd, struct blk_hdr *hdr, int *compr_algo, int *hash_algo) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ uint64_t v; Err bitreich.org 70 i+ Err bitreich.org 70 i+ read_blk_hdr(fd, hdr); Err bitreich.org 70 i+ match_ver(hdr->flags); Err bitreich.org 70 i+ Err bitreich.org 70 i+ v = hdr->flags >> COMPR_ALGO_SHIFT; Err bitreich.org 70 i+ v &= COMPR_ALGO_MASK; Err bitreich.org 70 i+ *compr_algo = v; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (*compr_algo < 0 || *compr_algo >= NR_COMPRS) Err bitreich.org 70 i+ errx(1, "unsupported compression algorithm: %d", *compr_algo); Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (verbose > 0) Err bitreich.org 70 i+ fprintf(stderr, "Compression algorithm: %s\n", Err bitreich.org 70 i+ compr_type2name(*compr_algo)); Err bitreich.org 70 i+ Err bitreich.org 70 i+ v = hdr->flags >> HASH_ALGO_SHIFT; Err bitreich.org 70 i+ v &= HASH_ALGO_MASK; Err bitreich.org 70 i+ *hash_algo = v; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (*hash_algo < 0 || *hash_algo >= NR_HASHES) Err bitreich.org 70 i+ errx(1, "unsupported hash algorithm: %d", *hash_algo); Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (verbose > 0) Err bitreich.org 70 i+ fprintf(stderr, "Hash algorithm: %s\n", Err bitreich.org 70 i+ hash_type2name(*hash_algo)); Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+void Err bitreich.org 70 i+load_snap_hdr(int fd, struct snap_hdr *hdr) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ read_snap_hdr(fd, hdr); Err bitreich.org 70 i+ match_ver(hdr->flags); Err bitreich.org 70 i+} Err bitreich.org 70 .