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.

Reply via email to