On Thu, Jul 30, 2020 at 01:05:44AM +0100, Al Viro wrote: > On Tue, Jul 07, 2020 at 07:48:00PM +0200, Christoph Hellwig wrote: > > If a file implements the ->read_iter method, the iter based splice read > > works and is always preferred over the ->read based one. Use it by > > default in do_splice_to and remove all the direct assignment of > > generic_file_splice_read to file_operations. > > The worst problem here is the assumption that all ->read_iter() instances > will take pipe-backed destination; that's _not_ automatically true. > In particular, it's almost certainly false for tap_read_iter() (as > well as tun_chr_read_iter() in IFF_VNET_HDR case). > > Other potentially interesting cases: cuse and hugetlbfs. > > But in any case, that blind assertion ("iter based splice read works") > really needs to be backed by something. I think we need to fix that in the instances, as we really expect ->splice_read to just work instead of the caller knowing what could work and what might not.