svn commit: r365643 - head/bin/cp

Rick Macklem rmacklem at uoguelph.ca
Fri Sep 11 21:52:21 UTC 2020


Konstantin Belousov wrote:
>On Fri, Sep 11, 2020 at 08:49:36PM +0000, Alan Somers wrote:
>> Author: asomers
>> Date: Fri Sep 11 20:49:36 2020
>> New Revision: 365643
>> URL: https://svnweb.freebsd.org/changeset/base/365643
>>
>> Log:
>>   cp: fall back to read/write if copy_file_range fails
>>
>>   Even though copy_file_range has a file-system agnostic version, it still
>>   fails on devfs (perhaps because the file descriptor is non-seekable?) In
>>   that case, fallback to old-fashioned read/write. Fixes
>>   "cp /dev/null /tmp/null"
>
>Devices are seekable.
>
>The reason for EINVAL is that vn_copy_file_range() checks that both in and out
>vnodes are VREG.  For devfs, they are VCHR.

I coded the syscall to the Linux man page, which states that EINVAL is returned
if either fd does not refer to a regular file.
Having said that, I do not recall testing the VCHR case under Linux. (ie. It might
actually work and the man page turns out to be incorrect?)

I will test this case under Linux when I get home next week, rick



More information about the svn-src-all mailing list