iSwitch from singly linked list to a tail queue - 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 507fc4bcf4bbfe7d0fefa6c8cdd699322715da61 /scm/dedup/commit/507fc4bcf4bbfe7d0fefa6c8cdd699322715da61.gph bitreich.org 70
1parent a7753b65b2b40ba265e30e8f2f0bda25da7baa53 /scm/dedup/commit/a7753b65b2b40ba265e30e8f2f0bda25da7baa53.gph bitreich.org 70
hAuthor: sin <sin@2f30.org> URL:mailto:sin@2f30.org bitreich.org 70
iDate: Tue, 7 May 2019 16:57:40 +0100 Err bitreich.org 70
i Err bitreich.org 70
iSwitch from singly linked list to a tail queue Err bitreich.org 70
i Err bitreich.org 70
iThis is needed to guarantee correct order of traversal for upcoming Err bitreich.org 70
istreaming encryption/authentication support. Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M snap.c | 30 +++++++++++++++--------------- Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 15 insertions(+), 15 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@@ -21,11 +21,11 @@ Err bitreich.org 70
i Err bitreich.org 70
i struct mdnode { Err bitreich.org 70
i unsigned char md[MDSIZE]; /* hash of block */ Err bitreich.org 70
i- SLIST_ENTRY(mdnode) e; /* mdhead link node */ Err bitreich.org 70
i+ TAILQ_ENTRY(mdnode) e; /* mdhead link node */ Err bitreich.org 70
i }; Err bitreich.org 70
i Err bitreich.org 70
i struct sctx { Err bitreich.org 70
i- SLIST_HEAD(mdhead, mdnode) mdhead; /* list of hashes contained in snapshot */ Err bitreich.org 70
i+ TAILQ_HEAD(mdhead, mdnode) mdhead; /* list of hashes contained in snapshot */ Err bitreich.org 70
i struct mdnode *mdnext; /* next hash to be returned via sget() */ Err bitreich.org 70
i int fd; /* underlying snapshot file descriptor */ Err bitreich.org 70
i int rdonly; /* when set to 1, the ssync() operation is a no-op */ Err bitreich.org 70
i@@ -48,7 +48,7 @@ loadmd(struct sctx *sctx) Err bitreich.org 70
i sseterr("failed to read block hash: %s", strerror(errno)); Err bitreich.org 70
i return -1; Err bitreich.org 70
i } Err bitreich.org 70
i- SLIST_INSERT_HEAD(&sctx->mdhead, mdnode, e); Err bitreich.org 70
i+ TAILQ_INSERT_TAIL(&sctx->mdhead, mdnode, e); Err bitreich.org 70
i return 0; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i@@ -68,11 +68,11 @@ initmdhead(struct sctx *sctx) Err bitreich.org 70
i continue; Err bitreich.org 70
i Err bitreich.org 70
i /* Cleanup */ Err bitreich.org 70
i- while (!SLIST_EMPTY(&sctx->mdhead)) { Err bitreich.org 70
i+ while (!TAILQ_EMPTY(&sctx->mdhead)) { Err bitreich.org 70
i struct mdnode *mdnode; Err bitreich.org 70
i Err bitreich.org 70
i- mdnode = SLIST_FIRST(&sctx->mdhead); Err bitreich.org 70
i- SLIST_REMOVE(&sctx->mdhead, mdnode, mdnode, e); Err bitreich.org 70
i+ mdnode = TAILQ_FIRST(&sctx->mdhead); Err bitreich.org 70
i+ TAILQ_REMOVE(&sctx->mdhead, mdnode, e); Err bitreich.org 70
i free(mdnode); Err bitreich.org 70
i } Err bitreich.org 70
i return -1; Err bitreich.org 70
i@@ -103,7 +103,7 @@ screat(char *path, int mode, 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- SLIST_INIT(&(*sctx)->mdhead); Err bitreich.org 70
i+ TAILQ_INIT(&(*sctx)->mdhead); Err bitreich.org 70
i (*sctx)->mdnext = NULL; Err bitreich.org 70
i (*sctx)->fd = fd; Err bitreich.org 70
i return 0; Err bitreich.org 70
i@@ -138,7 +138,7 @@ sopen(char *path, int flags, int mode, 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- SLIST_INIT(&(*sctx)->mdhead); Err bitreich.org 70
i+ TAILQ_INIT(&(*sctx)->mdhead); Err bitreich.org 70
i (*sctx)->mdnext = NULL; Err bitreich.org 70
i (*sctx)->fd = fd; Err bitreich.org 70
i (*sctx)->rdonly = 1; Err bitreich.org 70
i@@ -167,7 +167,7 @@ sput(struct sctx *sctx, unsigned char *md) Err bitreich.org 70
i return -1; Err bitreich.org 70
i } Err bitreich.org 70
i memcpy(mdnode->md, md, MDSIZE); Err bitreich.org 70
i- SLIST_INSERT_HEAD(&sctx->mdhead, mdnode, e); Err bitreich.org 70
i+ TAILQ_INSERT_TAIL(&sctx->mdhead, mdnode, e); Err bitreich.org 70
i return 0; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i@@ -183,9 +183,9 @@ sget(struct sctx *sctx, unsigned char *md) Err bitreich.org 70
i Err bitreich.org 70
i mdnode = sctx->mdnext; Err bitreich.org 70
i if (mdnode == NULL) Err bitreich.org 70
i- mdnode = SLIST_FIRST(&sctx->mdhead); Err bitreich.org 70
i+ mdnode = TAILQ_FIRST(&sctx->mdhead); Err bitreich.org 70
i else Err bitreich.org 70
i- mdnode = SLIST_NEXT(mdnode, e); Err bitreich.org 70
i+ mdnode = TAILQ_NEXT(mdnode, e); Err bitreich.org 70
i sctx->mdnext = mdnode; Err bitreich.org 70
i if (mdnode != NULL) { Err bitreich.org 70
i memcpy(md, mdnode->md, MDSIZE); Err bitreich.org 70
i@@ -222,7 +222,7 @@ ssync(struct sctx *sctx) Err bitreich.org 70
i sseterr("lseek: %s", strerror(errno)); Err bitreich.org 70
i return -1; Err bitreich.org 70
i } Err bitreich.org 70
i- SLIST_FOREACH(mdnode, &sctx->mdhead, e) { 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 sseterr("failed to write block hash: %s", Err bitreich.org 70
i strerror(errno)); Err bitreich.org 70
i@@ -245,11 +245,11 @@ sclose(struct sctx *sctx) Err bitreich.org 70
i return -1; Err bitreich.org 70
i Err bitreich.org 70
i /* Cleanup */ Err bitreich.org 70
i- while (!SLIST_EMPTY(&sctx->mdhead)) { Err bitreich.org 70
i+ while (!TAILQ_EMPTY(&sctx->mdhead)) { Err bitreich.org 70
i struct mdnode *mdnode; Err bitreich.org 70
i Err bitreich.org 70
i- mdnode = SLIST_FIRST(&sctx->mdhead); Err bitreich.org 70
i- SLIST_REMOVE(&sctx->mdhead, mdnode, mdnode, e); Err bitreich.org 70
i+ mdnode = TAILQ_FIRST(&sctx->mdhead); Err bitreich.org 70
i+ TAILQ_REMOVE(&sctx->mdhead, mdnode, e); Err bitreich.org 70
i free(mdnode); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
.
Response:
text/plain