What causes the extent to be incomplete? And can I avoid it? I tried
with my example but with wget with a larger file (1G) and the diff
produces was only 60MB which indicates that it "mostly" works.
Basically what I'm trying to achieve is having a "reference" / "master"
btrfs subvolume where i add / edit / remove files continuously. From
where i can cp --reflink=always some of those files to new "child"
subvolumes as needed. As long as the files are still in the master
subvolume I'll only send the diff of the data. The plan is to have this
master subvolume across multiple remote machines (synced with rsync or
perhaps btrfs send / receive) and being able to update / change it as
needed but always only sending the diffs of the child subvolumes. Maybe
this is a bit optimistic.
On 2019-02-18 19:06, Chris Murphy wrote:
On Mon, Feb 18, 2019 at 6:05 AM André Malm <ad...@sheepa.org> wrote:
So the takeaway from this is that btrfs send doesn't work this way, I
can't copy a file with reflink=always and expect it to be diffed
correctly as in a parent-child situation or?
Sorry about the confusion, André. What you're doing isn't described or
explained in existing documentation: man page, wiki, or list archive,
it's only explained in this thread. So, all I can say is it's going to
take some testing on your part and possibly documentation and example
improvements, for this alternative usage.
At the moment, based on Andrei's explanation and example, what you're
trying to do is valid. He also explained why you're seeing different
results in send stream output in your dd vs wget example: it's the
files themselves not the application.
"The last extent is incomplete which causes btrfs to not attempt cloning."