It seems to me that "reflink" is an extraordinarily bad name for something
that from a user point of view does not appear to make any kind of link at
The reasonable options are full copy semantics or (read-only) snapshot
semantics. A writable non-link "link" that you can't change the owner of
doesn't seem like a very useful construct to me.
The general idea here is excellent of course. However, I suggest this system
call would make a lot more sense if it were named "fclone" (or something like
that) with full copy semantics. It should preserve the owner, permissions
and data to begin with, and then the caller should be able to change all
three after the fact. Sort of like "fork" or "clone".