Date: Sat, 8 Jun 2024 09:01:52 +0100 From: David Chisnall <theraven@freebsd.org> To: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= <des@freebsd.org> Cc: Stefan Esser <se@freebsd.org>, Yuri Victorovich <yuri@freebsd.org>, freebsd-hackers@freebsd.org Subject: Re: What are equivalents of Linux ioctl functions FICLONE and FICLONERANGE ? Message-ID: <A74BD85A-D066-4765-A6F7-6CC1A5B194B7@freebsd.org> In-Reply-To: <86o78c2dxu.fsf@ltc.des.dev> References: <86o78c2dxu.fsf@ltc.des.dev>
next in thread | previous in thread | raw e-mail | index | archive | help
On 8 Jun 2024, at 06:36, Dag-Erling Sm=C3=B8rgrav <des@freebsd.org> wrote: >=20 > =EF=BB=BFStefan Esser <se@FreeBSD.org> writes: >> Yuri Victorovich <yuri@FreeBSD.org> writes: >>> On Linux files can be copied with: >>> ioctl(destFd, FICLONE, srcFd) >>> What would be the equivalent of this on FreeBSD? >> That would be copy_file_range(), but as on Linux, it does only >> offer any benefit on filesystems that support copy-on-write or >> potentially on network attached storage. >=20 > Even without filesystem support, it still avoids copying the contents of > the file out to user space, so it's faster than a regular copy. Note that there is no in-kernel fallback path for if the file descriptor typ= e does not support it. This means that you cannot use it, for example, for c= opies from an anonymous shared memory object to a regular file. David=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?A74BD85A-D066-4765-A6F7-6CC1A5B194B7>