Re: RFC: Should copy_file_range(2) work for shared memory objects?
Date: Wed, 20 Sep 2023 23:54:01 UTC
On Sep 20, 2023, at 16:47, Rick Macklem <rick.macklem@gmail.com> wrote:
>
> Right now (as noted by PR#273962) copy_file_range(2)
> fails for shared memory objects because there is no
> vnode (f_vnode == NULL) for them and the code uses
> vnodes (including a file system specific VOP_COPY_FILE_RANGE(9)).
>
> Do you think copy_file_range(2) should work for shared memory objects?
>
> This would require specific handling in kern_copy_file_range()
> to work. I do not think the patch would be a lot of work, but
> I am not familiar with the f_ops and shared memory code.
>
> rick
>
According to a Linux man page, some failure modes are
EINVAL Either fd_in or fd_out is not a regular file.
EOPNOTSUPP (since Linux 5.19) The filesystem does not support this operation.
EXDEV (since Linux 5.19)
The files referred to by fd_in and fd_out are not on the
same filesystem, and the source and target filesystems are
not of the same type, or do not support cross-filesystem copy.
According to the FreeBSD man page
The copy_file_range() system call is expected to be compatible with the
Linux system call of the same name.