tRemove .cache file - dedup - deduplicating backup program
 (HTM) git clone git://git.z3bra.org/dedup.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 1a978a0ee0986c6cd869dd94a47cf85b89f2474f
 (DIR) parent df98cd4221d5e54c88d5ce172690c6cc7cb08235
 (HTM) 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
       tthe 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
       t@@ -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
       t@@ -1,4 +1,4 @@
       -.Dd March 05, 2019
       +.Dd March 06, 2019
        .Dt DEDUP 1
        .Os
        .Sh NAME
       t@@ -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
       t@@ -18,7 +18,6 @@
        
        #define SNAPSF ".snapshots"
        #define STOREF ".store"
       -#define CACHEF ".cache"
        
        enum {
                WALK_CONTINUE,
       t@@ -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;
        
       t@@ -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;
       t@@ -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;
       t@@ -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) {
       t@@ -620,7 +541,7 @@ init(int iflag)
                }
        
                cache = alloc_cache();
       -        load_cache();
       +        walk_snap(load_cache, NULL);
        }
        
        static void
       t@@ -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
       t@@ -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
       t@@ -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);
       -}