Re: [PATCH v2 1/3] fs: fork splice_file_range() from do_splice_direct()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Dec 4, 2023 at 4:07 PM Christoph Hellwig <hch@xxxxxx> wrote:
>
> On Mon, Dec 04, 2023 at 03:29:43PM +0200, Amir Goldstein wrote:
> > > > Shouldn't ceph be switched to use generic_copy_file_range?
> > > > That does the capping of the size which we want, and doesn't update
> > > > the file offsets, which would require recalculation in the ceph code.
> > > >
> >
> > IDK. I did not want to change the logic of the ceph code.
> > I am not sure that we must impose MAX_RW_COUNT limit on ceph,
> > although, i_layout.object_size may already be limited? Jeff?
>
> We better don't go beyond it, as it is called from the copy_file_range
> implementation which is expected to never return more than MAX_RW_COUNT.
> So either it is a noop change, or it fixes a bug.
>

ok.

> >
> > > > But this could avoid another exported API as splice_file_range could
> > > > simply be folded into generic_copy_file_range which should reduce
> > > > confusion.  And splice really is a mess for so many different layers
> > > > of the onion being exposed.  I've been wanting to reduce some of that
> > > > for a while but haven't found a really nice way yet.
> > >
> > > (and generic_copy_file_range really should be renamed to
> > > splice_copy_file_range and moved to splice.c)
> >
> > That depends if we are keeping two helpers.
> > One with a cap of MAX_RW_COUNT and one without.
> > If we are going to keep two helpers, I'd rather keep things as they are.
> > If one helper, then I personally prefer splice_file_range() over
> > splice_copy_file_range() and other reviewers (Jan) liked this
> > name as well.
>
> Well, splice_file_range makes sense if it is a separate helper.  But when
> is the default implementation for ->copy_file_range and matches the
> signature, naming it that way is not only sensible but required to keep
> sanity.
>

It is NOT a default implementation of ->copy_file_range(), but
a fallback helper.
Specifically, it is never expected to have a filesystem that does
.copy_file_range = generic_copy_file_range,
so getting rid of generic_copy_file_range() would be good.

Note also that generic_copy_file_range() gets a flags argument
that is COPY_FILE_* flags (currently only for the vfs level)
and this flags argument is NOT the splice flags argument, so
I intentionally removed the flags argument from splice_file_range()
to reduce confusion.

I like the idea of moving MAX_RW_COUNT into splice_file_range()
and replacing generic_copy_file_range() calls with splice_file_range().

I do not feel strongly against splice_copy_file_range() name, but
I would like to get feedback from other reviewers that approved the
name splice_file_range() before changing it.

Thanks,
Amir.





[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux