Closed crusaderky closed 5 years ago
:+1: Same problem here.
It's a bit hard to diagnose this without having the snapshots. Note that the heuristic considers factors other than the diff size, including how "tall" the diff stack is on the destination. i.e., it won't create a thousand one-day diffs each depending on the previous, because if any one of those thousand goes bad, you lose the whole thing. Buttersink is designed to occasionally diff from an "old" snapshot, so that your diff repo is more reliable.
In any event, I can see that it would at least be helpful to make the heuristic process more transparent, and maybe give some options for tweaking it. I'll leave this bug open to address that.
Don't you think sending the snapshots in the order they are taken should be sufficient? I mean, if my source disk has enough space for storing all snapshots, a destination disk of the same size will suffice for storing them, and this is clearly not the case using the current algorithm.
Indeed. My comment should only be relevant when S3 is the destination. I'll investigate further.
Base for diffs should be updated ones any snapshot transfer is finished.
My extra note on optimizations #58.
The case of transferring into a btrfs system should be addressed in d25e71e. "Tall" diff chains will only be avoided for S3, which is storing diffs.
I have a read-write "current" subvolume, from which I create read-only snapshots every day. If I didn't do anything significant on a given day,
btrfs send <today> -p <yesterday>
will produce a stream worth kilobytes.buttersink doesn't seem to realise this, and tries to do extremely expensive transfers from a much older snapshot.
To another btrfs hard disk:
To s3:
In the above situation,