dedup

deduplicating backup program
git clone git://git.2f30.org/dedup
Log | Files | Refs | README | LICENSE

commit 53b588c7899ecf4f4c969259e2c80f18192893ba
parent ff783e2a9af6d97d55697d654d759ca48d6a28a1
Author: sin <sin@2f30.org>
Date:   Sat, 27 Apr 2019 18:31:05 +0100

Add some comments

Diffstat:
Mbstorage.c | 15++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/bstorage.c b/bstorage.c @@ -84,8 +84,8 @@ struct bhdr { /* Block descriptor */ struct bd { uint64_t type; - uint64_t offset; - uint64_t size; + uint64_t offset; /* offset of block */ + uint64_t size; /* size of block */ uint64_t refcnt; unsigned char md[MDSIZE]; RB_ENTRY(bd) rbe; @@ -359,7 +359,6 @@ bscreat(struct bctx *bctx, char *path, int mode, struct bparam *bpar) close(fd); return -1; } - bhdr->nbd = 0; sctx->fd = fd; @@ -484,6 +483,7 @@ bsput(struct bctx *bctx, void *buf, size_t n, unsigned char *md) if (lseek(sctx->fd, bdoffs, SEEK_SET) < 0) return -1; + /* Block already present, increment the reference count */ bd->refcnt++; if (packbd(sctx->fd, bd) < 0) { bd->refcnt--; @@ -583,8 +583,7 @@ bsrm(struct bctx *bctx, unsigned char *md) if (punchhole(sctx->fd, bd->offset, bd->size) < 0) { /* * Filesystem does not support hole punching. - * Try to recover the block descriptor so we don't - * lose track of the block. + * Restore reference count. */ lseek(sctx->fd, bdoffs, SEEK_SET); bd->refcnt++; @@ -592,6 +591,11 @@ bsrm(struct bctx *bctx, unsigned char *md) return -1; } + /* + * Remove block from block descriptor cache as this is no + * longer a valid block. Insert it into the garbage collector + * list instead. + */ RB_REMOVE(bdcache, &sctx->bdcache, bd); SLIST_INSERT_HEAD(&sctx->gchead, bd, sle); return 0; @@ -685,6 +689,7 @@ bsclose(struct bctx *bctx) return -1; sctx = bctx->sctx; + /* Free block descriptor cache */ RB_FOREACH_SAFE(bd, bdcache, &sctx->bdcache, tmp) { RB_REMOVE(bdcache, &sctx->bdcache, bd);