iRemember store size in the index header - 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 7af43f80bce1e8a11967d0d83f1346e028a2f240 /scm/dedup/commit/7af43f80bce1e8a11967d0d83f1346e028a2f240.gph bitreich.org 70 1parent 7991e88c0880ae32e6f5f4e9e87eea03e7e6d5d2 /scm/dedup/commit/7991e88c0880ae32e6f5f4e9e87eea03e7e6d5d2.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Sun, 17 Feb 2019 11:41:53 +0000 Err bitreich.org 70 i Err bitreich.org 70 iRemember store size in the index header Err bitreich.org 70 i Err bitreich.org 70 iThis is needed because when using disk devices directly it doesn't Err bitreich.org 70 imake sense to lseek to the end to append to the store. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M dedup.c | 7 ++++++- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 6 insertions(+), 1 deletion(-) 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@@ -33,6 +33,7 @@ enum { Err bitreich.org 70 i struct enthdr { Err bitreich.org 70 i uint64_t flags; Err bitreich.org 70 i uint64_t nents; Err bitreich.org 70 i+ uint64_t store_size; Err bitreich.org 70 i }; Err bitreich.org 70 i Err bitreich.org 70 i /* block descriptor */ Err bitreich.org 70 i@@ -344,12 +345,13 @@ write_blk(uint8_t *buf, struct bdescr *bdescr) Err bitreich.org 70 i { Err bitreich.org 70 i lseek(sfd, bdescr->offset, SEEK_SET); Err bitreich.org 70 i xwrite(sfd, buf, bdescr->size); Err bitreich.org 70 i+ enthdr.store_size += bdescr->size; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i off_t Err bitreich.org 70 i store_size(void) Err bitreich.org 70 i { Err bitreich.org 70 i- return lseek(sfd, 0, SEEK_END); Err bitreich.org 70 i+ return enthdr.store_size; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i int Err bitreich.org 70 i@@ -621,6 +623,9 @@ init(void) Err bitreich.org 70 i err(1, "fstat %s", INDEXF); Err bitreich.org 70 i if (sb.st_size != 0) Err bitreich.org 70 i xread(ifd, &enthdr, sizeof(enthdr)); Err bitreich.org 70 i+ if (verbose) Err bitreich.org 70 i+ fprintf(stderr, "store size: %llu bytes\n", Err bitreich.org 70 i+ (unsigned long long)enthdr.store_size); Err bitreich.org 70 i Err bitreich.org 70 i if (cache_nents() != 0) Err bitreich.org 70 i init_cache(); Err bitreich.org 70 .