Add some comments to bsrm() - 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 baf29fa2203239eb1767c97b48e093364c7c9f46
DIR parent 00d03339c89087d34d11f3147daae28de6f94c7a
HTML Author: sin <sin@2f30.org>
Date: Thu, 25 Apr 2019 22:46:18 +0100
Add some comments to bsrm()
Diffstat:
M bstorage.c | 6 ++++++
1 file changed, 6 insertions(+), 0 deletions(-)
---
DIR diff --git a/bstorage.c b/bstorage.c
@@ -538,6 +538,7 @@ bsget(struct bctx *bctx, unsigned char *md, void *buf, size_t *n)
return 0;
}
+/* Remove a block with the given hash */
static int
bsrm(struct bctx *bctx, unsigned char *md)
{
@@ -568,6 +569,11 @@ bsrm(struct bctx *bctx, unsigned char *md)
mode = FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE;
if (fallocate(sctx->fd, mode, 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.
+ */
lseek(sctx->fd, bdoffs, SEEK_SET);
bd->refcnt++;
packbd(sctx->fd, bd);