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