--- Begin Message ---
Subject: |
Missing fallback if copy_file_range returns ENOENT? |
Date: |
Sat, 31 Dec 2022 17:00:48 +0000 |
Hi folks,
Originally reported in Gentoo at https://bugs.gentoo.org/885793.
Frank Limpert reported that when copying large files across CIFS shares,
cp may abort because copy_file_range returns ENOENT sometimes.
This sounds like a suspicious kernel bug if CIFS interactions are sometimes
spuriously giving ENOENT, but I'm wondering if coreutils needs to do
anything to handle this as well.
strace output from his cp invocation:
https://bugs.gentoo.org/attachment.cgi?id=842497
Best,
sam
signature.asc
Description: Message signed with OpenPGP
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#60455: Missing fallback if copy_file_range returns ENOENT? |
Date: |
Sun, 8 Jan 2023 13:45:40 +0000 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.0 |
On 08/01/2023 00:51, Sam James wrote:
On 7 Jan 2023, at 16:25, Pádraig Brady <P@draigBrady.com> wrote:
OK it's probably worth handling in coreutils then.
Note I still get the feeling this is a race in CIFS
that is only being made more apparent with copy_file_range(),
but fair enough that this is a regressions for users and
we should be able to cater for it easy enough.
Or more precisely, ENOENT will be unusual for fd operations,
and so falling back to a standard copy should just be
restricted to this or similar cases.
If this was seen on a single CIFS mount it may be
less appropriate as then the user may not want to
fall back to a client side copy, when a server side should work.
But in this separate mount case, the fallback is appropriate.
I guess we could restrict to separate device IDs,
but that's probably getting too complicated for this.
Total agreement. Thanks, looks good!
Pushed.
Marking this as done.
cheers,
Pádraig
--- End Message ---