Use copy_file_range system call for copying on Linux systems

Alan Bateman Alan.Bateman at oracle.com
Wed Feb 16 13:40:30 UTC 2022


On 16/02/2022 13:13, Ilya Starchenko wrote:
>   
> I have suggestion. Copy_file_range() has been introduced in the Linux kernel since version 4.5. system call performs an in-kernel copy between two file descriptors without the additional cost of transferring data from the kernel to user space and then back into the kernel, including NFS(It will have huge performance impact). It copies up to len bytes of data from the source file descriptor fd_in to the target file descriptor fd_out, overwriting any data that exists within the requested range of the target file. Currently we use sendfile, but I think we need to use copy_file_range when possible. What do you think?
>
There was brief discussion about this on nio-dev in April 2021. As I 
recall, there was an issue with the function prototype not being 
available (I can't recall if it was system include files or glibc). It 
might be best to start a new discussion there as it may be time to look 
at it again.

-Alan


More information about the core-libs-dev mailing list