Date: Sat, 19 Sep 2020 23:18:56 +0000 From: Rick Macklem <rmacklem@uoguelph.ca> To: Alan Somers <asomers@freebsd.org> Cc: Konstantin Belousov <kostikbel@gmail.com>, "src-committers@freebsd.org" <src-committers@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "svn-src-head@freebsd.org" <svn-src-head@freebsd.org> Subject: Re: svn commit: r365643 - head/bin/cp Message-ID: <YTBPR01MB3966A515F676EB5B938AC007DD3C0@YTBPR01MB3966.CANPRD01.PROD.OUTLOOK.COM> In-Reply-To: <CAOtMX2hLLE1c=qbhSFnoRk2SfAg9sOk0PZtiyvNZ_u39YwGKmA@mail.gmail.com> References: <202009112049.08BKnavL032212@repo.freebsd.org> <20200911214327.GY94807@kib.kiev.ua> <YTBPR01MB3966E158BCA0C56C5EE64CA8DD240@YTBPR01MB3966.CANPRD01.PROD.OUTLOOK.COM>, <CAOtMX2hLLE1c=qbhSFnoRk2SfAg9sOk0PZtiyvNZ_u39YwGKmA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Alan Somers wrote:=0A= >On Fri, Sep 11, 2020 at 3:52 PM Rick Macklem <rmacklem@uoguelph.ca<mailto:= rmacklem@uoguelph.ca>> wrote:=0A= >Konstantin Belousov wrote:=0A= >>On Fri, Sep 11, 2020 at 08:49:36PM +0000, Alan Somers wrote:=0A= >>> Author: asomers=0A= >>> Date: Fri Sep 11 20:49:36 2020=0A= >>> New Revision: 365643=0A= >>> URL: https://svnweb.freebsd.org/changeset/base/365643=0A= >>>=0A= >>> Log:=0A= >>> cp: fall back to read/write if copy_file_range fails=0A= >>>=0A= >>> Even though copy_file_range has a file-system agnostic version, it st= ill=0A= >>> fails on devfs (perhaps because the file descriptor is non-seekable?)= In=0A= >>> that case, fallback to old-fashioned read/write. Fixes=0A= >>> "cp /dev/null /tmp/null"=0A= >>=0A= >>Devices are seekable.=0A= >>=0A= >>The reason for EINVAL is that vn_copy_file_range() checks that both in an= d out=0A= >>vnodes are VREG. For devfs, they are VCHR.=0A= >=0A= >I coded the syscall to the Linux man page, which states that EINVAL is ret= urned=0A= >if either fd does not refer to a regular file.=0A= >Having said that, I do not recall testing the VCHR case under Linux. (ie. = It might=0A= >actually work and the man page turns out to be incorrect?)=0A= >=0A= >I will test this case under Linux when I get home next week, rick=0A= I'll admit I haven't tested this in Linux to see if they do return EINVAL.= =0A= =0A= >Since there's no standard, I think it's fine for us to support devfs if po= ssible.=0A= 1 - I think this is a good question for a mailing list like freebsd-current= @.=0A= 2 - I see Linux as the de-facto standard these days and consider POSIX no= =0A= longer relevant, but that's just mho.=0A= 3 - For NFSv4.2, the Copy operation will fail for non-regular files, so if = you=0A= do this, you will need to handle the fall-back to using the generic c= ode.=0A= (Should be doable, but you need to be aware of this case.)=0A= =0A= Having said the above, it is up to the "collective" and not me and, as such= ,=0A= I suggest #1, to see whether others think doing a non-Linux compatible=0A= version makes sense for FreeBSD?=0A= =0A= rick=0A=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?YTBPR01MB3966A515F676EB5B938AC007DD3C0>