iRework additional data handling - 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 faf2fab2ac2febc631159913683d1c3dbc5166b3 /scm/dedup/commit/faf2fab2ac2febc631159913683d1c3dbc5166b3.gph bitreich.org 70
1parent 01c8fce481e7a253ac9a96c4bbc877aab2945586 /scm/dedup/commit/01c8fce481e7a253ac9a96c4bbc877aab2945586.gph bitreich.org 70
hAuthor: sin <sin@2f30.org> URL:mailto:sin@2f30.org bitreich.org 70
iDate: Sun, 12 May 2019 16:36:27 +0100 Err bitreich.org 70
i Err bitreich.org 70
iRework additional data handling Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M snap.c | 75 +++++++++++++++---------------- Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 36 insertions(+), 39 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/snap.c b/snap.c /scm/dedup/file/snap.c.gph bitreich.org 70
i@@ -61,18 +61,12 @@ struct sctx { Err bitreich.org 70
i struct shdr shdr; /* snapshot header */ Err bitreich.org 70
i }; Err bitreich.org 70
i Err bitreich.org 70
i-/* Read snapshot header */ Err bitreich.org 70
i+/* Unpack snapshot header */ Err bitreich.org 70
i static int Err bitreich.org 70
i-unpackshdr(int fd, struct shdr *shdr) Err bitreich.org 70
i+unpackshdr(unsigned char *buf, struct shdr *shdr) Err bitreich.org 70
i { Err bitreich.org 70
i- unsigned char buf[SHDRSIZE]; Err bitreich.org 70
i int n; Err bitreich.org 70
i Err bitreich.org 70
i- if (xread(fd, buf, sizeof(buf)) != sizeof(buf)) { Err bitreich.org 70
i- seterr("failed to read snapshot header: %s", strerror(errno)); Err bitreich.org 70
i- return -1; Err bitreich.org 70
i- } Err bitreich.org 70
i- Err bitreich.org 70
i n = unpack(buf, "'16'24qq", Err bitreich.org 70
i shdr->magic, Err bitreich.org 70
i shdr->header, Err bitreich.org 70
i@@ -83,11 +77,10 @@ unpackshdr(int fd, struct shdr *shdr) Err bitreich.org 70
i return n; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i-/* Write snapshot header */ Err bitreich.org 70
i+/* Pack snapshot header */ Err bitreich.org 70
i static int Err bitreich.org 70
i-packshdr(int fd, struct shdr *shdr) Err bitreich.org 70
i+packshdr(unsigned char *buf, struct shdr *shdr) Err bitreich.org 70
i { Err bitreich.org 70
i- unsigned char buf[SHDRSIZE]; Err bitreich.org 70
i int n; Err bitreich.org 70
i Err bitreich.org 70
i n = pack(buf, "'16'24qq", Err bitreich.org 70
i@@ -97,36 +90,25 @@ packshdr(int fd, struct shdr *shdr) Err bitreich.org 70
i shdr->nbd); Err bitreich.org 70
i Err bitreich.org 70
i assert(n == SHDRSIZE); Err bitreich.org 70
i- if (xwrite(fd, buf, n) != n) { Err bitreich.org 70
i- seterr("failed to write snapshot header: %s", strerror(errno)); Err bitreich.org 70
i- return -1; Err bitreich.org 70
i- } Err bitreich.org 70
i return n; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i static int Err bitreich.org 70
i initmdhead(struct sctx *sctx) Err bitreich.org 70
i { Err bitreich.org 70
i- unsigned char ad[SHDRSIZE]; Err bitreich.org 70
i struct shdr *shdr; Err bitreich.org 70
i uint64_t i; Err bitreich.org 70
i Err bitreich.org 70
i- if (lseek(sctx->fd, 0, SEEK_SET) < 0) { Err bitreich.org 70
i- seterr("lseek: %s", strerror(errno)); Err bitreich.org 70
i- return -1; Err bitreich.org 70
i- } Err bitreich.org 70
i- Err bitreich.org 70
i- if (xread(sctx->fd, ad, sizeof(ad)) != sizeof(ad)) { Err bitreich.org 70
i- seterr("failed to read snapshot header: %s\n", strerror(errno)); Err bitreich.org 70
i- return -1; Err bitreich.org 70
i- } Err bitreich.org 70
i- Err bitreich.org 70
i shdr = &sctx->shdr; Err bitreich.org 70
i if (sctx->crypto) { Err bitreich.org 70
i+ unsigned char ad[SHDRSIZE]; Err bitreich.org 70
i crypto_secretstream_xchacha20poly1305_state state; Err bitreich.org 70
i struct shdr *shdr; Err bitreich.org 70
i Err bitreich.org 70
i shdr = &sctx->shdr; Err bitreich.org 70
i+ if (packshdr(ad, shdr) < 0) Err bitreich.org 70
i+ return -1; Err bitreich.org 70
i+ Err bitreich.org 70
i if (crypto_secretstream_xchacha20poly1305_init_pull(&state, Err bitreich.org 70
i shdr->header, Err bitreich.org 70
i param.key) != 0) { Err bitreich.org 70
i@@ -196,6 +178,7 @@ err0: Err bitreich.org 70
i int Err bitreich.org 70
i screat(char *path, int mode, struct sctx **sctx) Err bitreich.org 70
i { Err bitreich.org 70
i+ unsigned char buf[SHDRSIZE]; Err bitreich.org 70
i struct shdr *shdr; Err bitreich.org 70
i int crypto; Err bitreich.org 70
i int fd; Err bitreich.org 70
i@@ -249,18 +232,24 @@ screat(char *path, int mode, struct sctx **sctx) Err bitreich.org 70
i shdr->flags = (VMAJ << VMAJSHIFT) | VMIN; Err bitreich.org 70
i shdr->nbd = 0; Err bitreich.org 70
i Err bitreich.org 70
i- if (packshdr(fd, shdr) < 0) { Err bitreich.org 70
i+ if (packshdr(buf, shdr) < 0) { Err bitreich.org 70
i free(*sctx); Err bitreich.org 70
i close(fd); Err bitreich.org 70
i return -1; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i+ if (xwrite(fd, buf, SHDRSIZE) != SHDRSIZE) { Err bitreich.org 70
i+ seterr("failed to write snapshot header: %s", strerror(errno)); Err bitreich.org 70
i+ return -1; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ Err bitreich.org 70
i return 0; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i int Err bitreich.org 70
i sopen(char *path, int flags, int mode, struct sctx **sctx) Err bitreich.org 70
i { Err bitreich.org 70
i+ unsigned char buf[SHDRSIZE]; Err bitreich.org 70
i struct shdr *shdr; Err bitreich.org 70
i int crypto; Err bitreich.org 70
i int fd; Err bitreich.org 70
i@@ -312,7 +301,12 @@ sopen(char *path, int flags, int mode, struct sctx **sctx) Err bitreich.org 70
i Err bitreich.org 70
i shdr = &(*sctx)->shdr; Err bitreich.org 70
i Err bitreich.org 70
i- if (unpackshdr(fd, shdr) < 0) { Err bitreich.org 70
i+ if (xread(fd, buf, SHDRSIZE) != SHDRSIZE) { Err bitreich.org 70
i+ seterr("failed to read snapshot header: %s", strerror(errno)); Err bitreich.org 70
i+ return -1; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ Err bitreich.org 70
i+ if (unpackshdr(buf, shdr) < 0) { Err bitreich.org 70
i free(sctx); Err bitreich.org 70
i close(fd); Err bitreich.org 70
i return -1; Err bitreich.org 70
i@@ -419,23 +413,18 @@ ssync(struct sctx *sctx) Err bitreich.org 70
i Err bitreich.org 70
i shdr = &sctx->shdr; Err bitreich.org 70
i if (sctx->crypto) { Err bitreich.org 70
i- unsigned char ad[SHDRSIZE]; Err bitreich.org 70
i+ unsigned char hdr[SHDRSIZE]; Err bitreich.org 70
i crypto_secretstream_xchacha20poly1305_state state; Err bitreich.org 70
i Err bitreich.org 70
i crypto_secretstream_xchacha20poly1305_init_push(&state, Err bitreich.org 70
i shdr->header, Err bitreich.org 70
i param.key); Err bitreich.org 70
i Err bitreich.org 70
i- if (packshdr(sctx->fd, shdr) < 0) Err bitreich.org 70
i+ if (packshdr(hdr, shdr) < 0) Err bitreich.org 70
i return -1; Err bitreich.org 70
i Err bitreich.org 70
i- if (lseek(sctx->fd, 0, SEEK_SET) < 0) { Err bitreich.org 70
i- seterr("lseek: %s", strerror(errno)); Err bitreich.org 70
i- return -1; Err bitreich.org 70
i- } Err bitreich.org 70
i- Err bitreich.org 70
i- if (xread(sctx->fd, ad, sizeof(ad)) != sizeof(ad)) { Err bitreich.org 70
i- seterr("failed to read snapshot header: %s\n", strerror(errno)); Err bitreich.org 70
i+ if (xwrite(sctx->fd, hdr, SHDRSIZE) != SHDRSIZE) { Err bitreich.org 70
i+ seterr("failed to write snapshot header: %s", strerror(errno)); Err bitreich.org 70
i return -1; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i@@ -451,7 +440,7 @@ ssync(struct sctx *sctx) Err bitreich.org 70
i crypto_secretstream_xchacha20poly1305_push(&state, Err bitreich.org 70
i buf, NULL, Err bitreich.org 70
i mdnode->md, MDSIZE, Err bitreich.org 70
i- ad, sizeof(ad), tag); Err bitreich.org 70
i+ hdr, SHDRSIZE, tag); Err bitreich.org 70
i if (xwrite(sctx->fd, buf, sizeof(buf)) != sizeof(buf)) { Err bitreich.org 70
i seterr("failed to write block hash: %s", Err bitreich.org 70
i strerror(errno)); Err bitreich.org 70
i@@ -459,8 +448,16 @@ ssync(struct sctx *sctx) Err bitreich.org 70
i } Err bitreich.org 70
i } Err bitreich.org 70
i } else { Err bitreich.org 70
i- if (packshdr(sctx->fd, shdr) < 0) Err bitreich.org 70
i+ unsigned char hdr[SHDRSIZE]; Err bitreich.org 70
i+ Err bitreich.org 70
i+ if (packshdr(hdr, shdr) < 0) Err bitreich.org 70
i return -1; Err bitreich.org 70
i+ Err bitreich.org 70
i+ if (xwrite(sctx->fd, hdr, SHDRSIZE) != SHDRSIZE) { Err bitreich.org 70
i+ seterr("failed to write snapshot header: %s", strerror(errno)); Err bitreich.org 70
i+ return -1; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ Err bitreich.org 70
i TAILQ_FOREACH(mdnode, &sctx->mdhead, e) { Err bitreich.org 70
i if (xwrite(sctx->fd, mdnode->md, MDSIZE) != MDSIZE) { Err bitreich.org 70
i seterr("failed to write block hash: %s", Err bitreich.org 70
.
Response:
text/plain