URI: 
       Remove .cache file - dedup - deduplicating backup program
  HTML git clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
   DIR LICENSE
       ---
   DIR commit 1a978a0ee0986c6cd869dd94a47cf85b89f2474f
   DIR parent df98cd4221d5e54c88d5ce172690c6cc7cb08235
  HTML Author: sin <sin@2f30.org>
       Date:   Wed,  6 Mar 2019 09:33:19 +0000
       
       Remove .cache file
       
       It did not make a lot of sense since the same information is stored in
       the snapshots file.  The time spent to load the cache from the
       snapshots file on every run is negligible.
       
       Diffstat:
         M README                              |       2 +-
         M dedup.1                             |       4 ++--
         M dedup.c                             |      88 ++-----------------------------
         M dedup.h                             |       1 -
         M types.c                             |      36 -------------------------------
       
       5 files changed, 6 insertions(+), 125 deletions(-)
       ---
   DIR diff --git a/README b/README
       @@ -10,7 +10,7 @@ follows:
        
            tar -c ~/dir | dedup -r ~/bak -m "$(date)"
        
       -This will create .{cache,snapshots,store} files in the ~/bak
       +This will create .{snapshots,store} files in the ~/bak
        directory.  The store file contains all the unique blocks.  The
        snapshots file contains all the revisions of files that have been
        deduplicated.  Each revision is identified by its SHA256 hash.  The
   DIR diff --git a/dedup.1 b/dedup.1
       @@ -1,4 +1,4 @@
       -.Dd March 05, 2019
       +.Dd March 06, 2019
        .Dt DEDUP 1
        .Os
        .Sh NAME
       @@ -33,7 +33,7 @@ Enable verbose mode.
        .It Fl e Ar id
        Extract snapshot with the specified id.
        .It Fl r Ar root
       -Set the root directory where the .cache, .snapshots and .store
       +Set the root directory where the .snapshots and .store
        files will be created.
        .It Fl m Ar message
        Attach a descriptive message to the snapshot.
   DIR diff --git a/dedup.c b/dedup.c
       @@ -18,7 +18,6 @@
        
        #define SNAPSF ".snapshots"
        #define STOREF ".store"
       -#define CACHEF ".cache"
        
        enum {
                WALK_CONTINUE,
       @@ -36,7 +35,6 @@ static struct blk_hdr blk_hdr;
        static struct cache *cache;
        static int ifd;
        static int sfd;
       -static int cfd;
        static unsigned long long cache_hits;
        static unsigned long long cache_misses;
        
       @@ -395,7 +393,7 @@ check_snap(struct snapshot *snap, void *arg)
        }
        
        static int
       -reload_cache(struct snapshot *snap, void *arg)
       +load_cache(struct snapshot *snap, void *arg)
        {
                uint8_t *buf;
                uint64_t i;
       @@ -462,74 +460,6 @@ match_ver(uint64_t v)
        }
        
        static void
       -hash_cache_entry_update(struct cache_entry *cache_entry, SHA256_CTX *ctx)
       -{
       -        uint8_t buf[CACHE_ENTRY_SIZE];
       -        char fmt[BUFSIZ];
       -        int n;
       -
       -        snprintf(fmt, sizeof(fmt), "'%dqq", MDSIZE);
       -        n = pack(buf, fmt, cache_entry->md, cache_entry->offset,
       -                 cache_entry->size);
       -        SHA256_Update(ctx, buf, n);
       -}
       -
       -static void
       -load_cache(void)
       -{
       -        uint8_t md[MDSIZE];
       -        struct stat sb;
       -        SHA256_CTX ctx;
       -        uint64_t nr_entries, i;
       -
       -        if (fstat(cfd, &sb) < 0)
       -                err(1, "fstat");
       -        nr_entries = sb.st_size / CACHE_ENTRY_SIZE;
       -
       -        xlseek(cfd, 0, SEEK_SET);
       -        SHA256_Init(&ctx);
       -        for (i = 0; i < nr_entries; i++) {
       -                struct cache_entry cache_entry;
       -
       -                read_cache_entry(cfd, &cache_entry);
       -                hash_cache_entry_update(&cache_entry, &ctx);
       -                add_cache_entry(cache, &cache_entry);
       -        }
       -        SHA256_Final(md, &ctx);
       -
       -        if (memcmp(snap_hdr.cache_md, md, sizeof(snap_hdr.cache_md)) != 0) {
       -                if (verbose > 0)
       -                        fprintf(stderr, "Rebuilding cache\n");
       -                free_cache(cache);
       -                cache = alloc_cache();
       -                if (ftruncate(cfd, 0) < 0)
       -                        err(1, "ftruncate");
       -                xlseek(ifd, SNAP_HDR_SIZE, SEEK_SET);
       -                xlseek(cfd, 0, SEEK_SET);
       -                walk_snap(reload_cache, NULL);
       -        }
       -}
       -
       -static int
       -flush_cache(struct cache_entry *cache_entry, void *arg)
       -{
       -        hash_cache_entry_update(cache_entry, arg);
       -        write_cache_entry(cfd, cache_entry);
       -        return 0;
       -}
       -
       -static void
       -save_cache(void)
       -{
       -        SHA256_CTX ctx;
       -
       -        SHA256_Init(&ctx);
       -        xlseek(cfd, 0, SEEK_SET);
       -        walk_cache(cache, flush_cache, &ctx);
       -        SHA256_Final(snap_hdr.cache_md, &ctx);
       -}
       -
       -static void
        init_blk_hdr(void)
        {
                blk_hdr.flags = (VER_MAJ << VER_MAJ_SHIFT) | VER_MIN;
       @@ -598,17 +528,8 @@ init(int iflag)
                if (sfd < 0)
                        err(1, "open %s", STOREF);
        
       -        /*
       -         * The cache file does not have to exist
       -         * and will be created again if deleted.
       -         */
       -        cfd = open(CACHEF, O_RDWR | O_CREAT, 0600);
       -        if (cfd < 0)
       -                err(1, "open %s", CACHEF);
       -
                if (flock(ifd, LOCK_NB | LOCK_EX) < 0 ||
       -            flock(sfd, LOCK_NB | LOCK_EX) < 0 ||
       -            flock(cfd, LOCK_NB | LOCK_EX) < 0)
       +            flock(sfd, LOCK_NB | LOCK_EX) < 0)
                        err(1, "flock");
        
                if (iflag) {
       @@ -620,7 +541,7 @@ init(int iflag)
                }
        
                cache = alloc_cache();
       -        load_cache();
       +        walk_snap(load_cache, NULL);
        }
        
        static void
       @@ -629,17 +550,14 @@ term(void)
                if (verbose > 0)
                        print_stats(&snap_hdr.st);
        
       -        save_cache();
                free_cache(cache);
        
                save_blk_hdr();
                save_snap_hdr();
        
       -        fsync(cfd);
                fsync(sfd);
                fsync(ifd);
        
       -        close(cfd);
                close(sfd);
                close(ifd);
        }
   DIR diff --git a/dedup.h b/dedup.h
       @@ -10,7 +10,6 @@
        #define BLK_HDR_SIZE 16
        #define BLK_DESC_SIZE 48
        #define SNAPSHOT_SIZE 304
       -#define CACHE_ENTRY_SIZE 48
        
        #define MSGSIZE        256
        #define MDSIZE        32
   DIR diff --git a/types.c b/types.c
       @@ -193,39 +193,3 @@ write_snapshot_blk_descs(int fd, struct snapshot *snap)
                for (i = 0; i < snap->nr_blk_descs; i++)
                        write_blk_desc(fd, &snap->blk_desc[i]);
        }
       -
       -void
       -read_cache_entry(int fd, struct cache_entry *cache_entry)
       -{
       -        uint8_t buf[CACHE_ENTRY_SIZE];
       -        char fmt[BUFSIZ];
       -        int n;
       -
       -        if (xread(fd, buf, sizeof(buf)) == 0)
       -                errx(1, "read_blk_desc: unexpected EOF");
       -
       -        snprintf(fmt, sizeof(fmt), "'%dqq", MDSIZE);
       -        n = unpack(buf, fmt,
       -                   cache_entry->md,
       -                   &cache_entry->offset,
       -                   &cache_entry->size);
       -
       -        assert(n == CACHE_ENTRY_SIZE);
       -}
       -
       -void
       -write_cache_entry(int fd, struct cache_entry *cache_entry)
       -{
       -        uint8_t buf[CACHE_ENTRY_SIZE];
       -        char fmt[BUFSIZ];
       -        int n;
       -
       -        snprintf(fmt, sizeof(fmt), "'%dqq", MDSIZE);
       -        n = pack(buf, fmt,
       -                 cache_entry->md,
       -                 cache_entry->offset,
       -                 cache_entry->size);
       -
       -        assert(n == CACHE_ENTRY_SIZE);
       -        xwrite(fd, buf, n);
       -}