iFold rebuild_cache inside load_cache - 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 4e65a16a45c87ef2b43c2ce799091b74c475211a /scm/dedup/commit/4e65a16a45c87ef2b43c2ce799091b74c475211a.gph bitreich.org 70 1parent 3609b47d0d3af4279f5b9988a92dd47c4a06a777 /scm/dedup/commit/3609b47d0d3af4279f5b9988a92dd47c4a06a777.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Wed, 27 Feb 2019 09:59:02 +0000 Err bitreich.org 70 i Err bitreich.org 70 iFold rebuild_cache inside load_cache Err bitreich.org 70 i Err bitreich.org 70 iThere is a bug with rebuild cache at the moment. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M dedup.c | 28 ++++++++++++---------------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 12 insertions(+), 16 deletions(-) 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@@ -428,23 +428,22 @@ flush_cache(struct cache_entry *cache_entry) Err bitreich.org 70 i return 0; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i-static uint64_t Err bitreich.org 70 i-cache_nr_entries(void) Err bitreich.org 70 i+static void Err bitreich.org 70 i+load_cache(void) Err bitreich.org 70 i { Err bitreich.org 70 i struct stat sb; Err bitreich.org 70 i+ uint64_t nr_entries; Err bitreich.org 70 i+ uint64_t i; Err bitreich.org 70 i Err bitreich.org 70 i if (fstat(cfd, &sb) < 0) Err bitreich.org 70 i err(1, "fstat"); Err bitreich.org 70 i- return sb.st_size / CACHE_ENTRY_LEN; Err bitreich.org 70 i-} Err bitreich.org 70 i Err bitreich.org 70 i-static void Err bitreich.org 70 i-load_cache(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- uint64_t nr_entries; Err bitreich.org 70 i- uint64_t i; Err bitreich.org 70 i+ nr_entries = sb.st_size / CACHE_ENTRY_LEN; Err bitreich.org 70 i+ if (nr_entries == 0) { Err bitreich.org 70 i+ walk_snap(rebuild_cache, NULL); Err bitreich.org 70 i+ return; Err bitreich.org 70 i+ } Err bitreich.org 70 i Err bitreich.org 70 i- nr_entries = cache_nr_entries(); Err bitreich.org 70 i for (i = 0; i < nr_entries; i++) { Err bitreich.org 70 i struct cache_entry cache_entry; Err bitreich.org 70 i Err bitreich.org 70 i@@ -479,6 +478,8 @@ load_snaphdr(void) Err bitreich.org 70 i static void Err bitreich.org 70 i init(void) Err bitreich.org 70 i { Err bitreich.org 70 i+ cache = alloc_cache(); Err bitreich.org 70 i+ Err bitreich.org 70 i ifd = open(SNAPSF, O_RDWR | O_CREAT, 0600); Err bitreich.org 70 i if (ifd < 0) Err bitreich.org 70 i err(1, "open %s", SNAPSF); Err bitreich.org 70 i@@ -497,12 +498,7 @@ init(void) Err bitreich.org 70 i errx(1, "busy lock"); Err bitreich.org 70 i Err bitreich.org 70 i load_snaphdr(); Err bitreich.org 70 i- Err bitreich.org 70 i- cache = alloc_cache(); Err bitreich.org 70 i- if (cache_nr_entries() != 0) Err bitreich.org 70 i- load_cache(); Err bitreich.org 70 i- else Err bitreich.org 70 i- walk_snap(rebuild_cache, NULL); Err bitreich.org 70 i+ load_cache(); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 .