On 08/09/15 16:53, Pádraig Brady wrote:
> -------- Forwarded Message --------
> Subject: Re: [PATCH v1 0/8] VFS: In-kernel copy system call
FYI, this has changed slightly to...
> -------- Forwarded Message --------
> Subject: Re: [PATCH v3 8/9] vfs: copy_file_range() can do a pagecache copy
> with splice
> Date: Fri, 25 Sep 2015 22:58:42 +0100
For cp(1), mv(1), install(1), this will avoid user space copies in the normal
case,
client side copies in the network file system case,
and provide a more generalized interface to reflink().
It should not need a coreutils flag since it only pertains
to the data flow, rather than the final state.
coreutils pseudo code would be:
unsigned int cfr_flags = COPY_FR_COPY;
if (mode == mv)
cfr_flags = 0; /* reflink falling back to normal */
else if (mode == cp) {
if --reflink || --reflink==always
cfr_flags = COPY_FR_REFLINK;
else if --reflink==auto
cfr_flags = 0; /* reflink falling back to normal */
}
if vfs_copy_file_range(..., cfr_flags) == ENOTSUP
normal_user_space_copy();
cheers,
Pádraig.