RFC: copy_file_range(3)

Alexander Leidinger Alexander at leidinger.net
Wed Sep 23 19:21:48 UTC 2020


Quoting Konstantin Belousov <kostikbel at gmail.com> (from Wed, 23 Sep  
2020 17:56:15 +0300):

> On Wed, Sep 23, 2020 at 12:24:01PM +0200, Alexander Leidinger via  
> freebsd-hackers wrote:
>> Quoting Rick Macklem <rmacklem at uoguelph.ca> (from Wed, 23 Sep 2020 01:18:18
>> +0000):
>>
>> > Well, I ran some quick benchmarks using the attached programs,  
>> plus "cp" both
>> > before and with your copy_file_range() patch.
>> > copya - Does what I think your plan is above, with a limit of 2Mbytes
>> > for "len".
>> > copyb -Just uses copy_file_range() with 128Mbytes for "len".
>> >
>> > I first created the sparse file with createsparse.c. It is admittedly a
>> > worst case,
>> > creating alternating holes and data blocks of the minimum size  
>> supported by
>> > the file system. (I ran it on a UFS file system created with defaults,
>> > so the minimum
>> > hole size is 32Kbytes.)
>>
>> Not related to the topic of changing cp, but related to the topic of
>> copy_file_range: does nullfs support (as in pass-through to the underlying
>> FS) copy_file_range?
>
> Nullfs bypasses VOP_COPY_FILE_RANGE() same as any other multi-vp arg
> VOP.  What makes you think it is different ?

I understand "bypass" as "does not handle copy_file_range". And from  
what I was understanding in this discussion, each FS-driver needs to  
be modified to support copy_file_range. I've never looked into the  
nullfs code (and VFS is for me some kind of object oriented interface  
into which FSes can plug into, with a generic "I can't do that" for  
parts of the interface which needs a FS specific implementation in  
case the FS doesn't provide this part), so I do not know how it  
handles the "place A is a portal into place B". Naivly speaking I  
would assume it translates a request for a specific path by modifying  
the path internally, but for that it needs to provide an. I do not  
know how much meta-data needs to be handled / kept in memory /  
generated for this. I had the options "maybe to much for a  
pass-through", and "maybe not too much for a pass-through". To me it  
makes sense, that nullfs is able to handle this (I have a samba server  
in a jail which has some datasets mounted via nullfs, and the same  
datasets are also mounted into other jails and served read-only via a  
webserver or other kinds of servers, and would be usefule if samba  
could use copy_file_range on nullfs). You could argue that my question  
was more "is nullfs modified to handle copy_file_range", than "does it  
technically pass-through".

Bye,
Alexander.

-- 
http://www.Leidinger.net Alexander at Leidinger.net: PGP 0x8F31830F9F2772BF
http://www.FreeBSD.org    netchild at FreeBSD.org  : PGP 0x8F31830F9F2772BF
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: Digitale PGP-Signatur
URL: <http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20200923/5e97728b/attachment.sig>


More information about the freebsd-hackers mailing list