SMOLNET PORTAL home about changes
iSplit ssync() into plaintext/encryption variants - 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 1c0530ef5bf190a62ca8ce7c9b3ae14702b44a7f	/scm/dedup/commit/1c0530ef5bf190a62ca8ce7c9b3ae14702b44a7f.gph	bitreich.org	70
1parent d13482ec75f44aea5e16f7942945a9263d4736f5	/scm/dedup/commit/d13482ec75f44aea5e16f7942945a9263d4736f5.gph	bitreich.org	70
hAuthor: sin <sin@2f30.org>	URL:mailto:sin@2f30.org	bitreich.org	70
iDate:   Tue, 14 May 2019 13:27:44 +0300	Err	bitreich.org	70
i	Err	bitreich.org	70
iSplit ssync() into plaintext/encryption variants	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M snap.c                              |     121 +++++++++++++++++--------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 68 insertions(+), 53 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@@ -385,12 +385,74 @@ srewind(struct sctx *sctx)	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-ssync(struct sctx *sctx)	Err	bitreich.org	70
i+static int	Err	bitreich.org	70
i+syncnone(struct sctx *sctx)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i+        unsigned char hdr[SHDRSIZE];	Err	bitreich.org	70
i+        struct mdnode *mdnode;	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+        packshdr(hdr, shdr);	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
i+                                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+static int	Err	bitreich.org	70
i+synccrypto(struct sctx *sctx)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        unsigned char hdr[SHDRSIZE];	Err	bitreich.org	70
i+        crypto_secretstream_xchacha20poly1305_state state;	Err	bitreich.org	70
i         struct mdnode *mdnode;	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+        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+        packshdr(hdr, shdr);	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+                unsigned char buf[MDSIZE + crypto_secretstream_xchacha20poly1305_ABYTES];	Err	bitreich.org	70
i+                unsigned char tag;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                if (TAILQ_LAST(&sctx->mdhead, mdhead) == mdnode)	Err	bitreich.org	70
i+                        tag = crypto_secretstream_xchacha20poly1305_TAG_FINAL;	Err	bitreich.org	70
i+                else	Err	bitreich.org	70
i+                        tag = 0;	Err	bitreich.org	70
i+	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+                                                           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+                        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+ssync(struct sctx *sctx)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i         if (sctx == NULL) {	Err	bitreich.org	70
i                 seterr("invalid params");	Err	bitreich.org	70
i                 return -1;	Err	bitreich.org	70
i@@ -404,59 +466,12 @@ ssync(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-        shdr = &sctx->shdr;	Err	bitreich.org	70
i-        if (sctx->crypto) {	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-                packshdr(hdr, shdr);	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-                        unsigned char buf[MDSIZE + crypto_secretstream_xchacha20poly1305_ABYTES];	Err	bitreich.org	70
i-                        unsigned char tag;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-                        if (TAILQ_LAST(&sctx->mdhead, mdhead) == mdnode)	Err	bitreich.org	70
i-                                tag = crypto_secretstream_xchacha20poly1305_TAG_FINAL;	Err	bitreich.org	70
i-                        else	Err	bitreich.org	70
i-                                tag = 0;	Err	bitreich.org	70
i-	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-                                                                   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-                                return -1;	Err	bitreich.org	70
i-                        }	Err	bitreich.org	70
i-                }	Err	bitreich.org	70
i-        } else {	Err	bitreich.org	70
i-                unsigned char hdr[SHDRSIZE];	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-                packshdr(hdr, shdr);	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+        if (!sctx->crypto)	Err	bitreich.org	70
i+                syncnone(sctx);	Err	bitreich.org	70
i+        else	Err	bitreich.org	70
i+                synccrypto(sctx);	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
i-                                        strerror(errno));	Err	bitreich.org	70
i-                                return -1;	Err	bitreich.org	70
i-                        }	Err	bitreich.org	70
i-                }	Err	bitreich.org	70
i-        }	Err	bitreich.org	70
i         fsync(sctx->fd);	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
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/dedup/commit/1c0530ef5bf190a6...
Content-Typetext/plain; charset=utf-8