Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 07 Feb 2026 17:28:36 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 293028] About ENTR in cp(1), copy_file_range(2) and fuse filesystems
Message-ID:  <bug-293028-227-gd56P3vQao@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-293028-227@https.bugs.freebsd.org/bugzilla/>

index | next in thread | previous in thread | raw e-mail

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=293028

Alan Somers <asomers@FreeBSD.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rmacklem@FreeBSD.org

--- Comment #2 from Alan Somers <asomers@FreeBSD.org> ---
CC rmacklem, who's done so much work on copy_file_range.

copy_file_range is definitely not supposed to be one-shot.  Its man page says
"It is interruptible on most file systems" and "If it succeeds, the call
returns the number of bytes copied, which can be fewer than len."

And cp definitely does not assume that copy_file_range is one-shot.  You can
see that there's a loop in bin/cp/utils.c: 207.

So I think there one of two things must be going on:

* Either cp isn't handling an EINTR return value correctly, and is wrongly
exiting from the loop, or

* fusefs's VOP_COPY_FILE_RANGE implementation is returning EINTR when it really
should be returning a short operation instead.

I think the first problem is likelier.  But a reproduction case would be
helpful.

-- 
You are receiving this mail because:
You are the assignee for the bug.

home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-293028-227-gd56P3vQao>