Re: [PATCH 1/3] splice: default to iter based versions implicitly

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

 



On Tue, May 30, 2017 at 08:11:15AM +0100, Al Viro wrote:
> On Sun, May 28, 2017 at 12:48:05PM +0300, Christoph Hellwig wrote:
> > If a file_operations instance has the read or write iter methods we should
> > use the iter based splice code by default.  We still allow to overide it
> > with explicit ->read_iter and ->write_iter methods, but few of them are
> > left, and there is a non-zero chance that we could get rid of them in the
> > future.
> 
> ->read_iter() side:  you are changing behaviour for the following bunch:

->write_iter(): a whole lot more changed ones; OTOH, ITER_BDEV is less painful
that ITER_PIPE.

arch/s390/hypfs/inode.c:438:    .write_iter     = hypfs_write_iter,
drivers/bluetooth/hci_vhci.c:368:       .write_iter     = vhci_write,
drivers/char/mem.c:814: .write_iter     = write_iter_zero,
drivers/char/raw.c:287: .write_iter     = blkdev_write_iter,
drivers/infiniband/hw/hfi1/file_ops.c:110:      .write_iter = hfi1_write_iter,
drivers/infiniband/hw/qib/qib_file_ops.c:72:    .write_iter = qib_write_iter,
drivers/net/tap.c:1135: .write_iter     = tap_write_iter,
drivers/net/tun.c:2424: .write_iter = tun_chr_write_iter,
drivers/staging/lustre/lustre/llite/file.c:3119:        .write_iter = ll_file_write_iter,
drivers/staging/lustre/lustre/llite/file.c:3132:        .write_iter   = ll_file_write_iter,
drivers/staging/lustre/lustre/llite/file.c:3148:        .write_iter   = ll_file_write_iter,
drivers/usb/gadget/function/f_fs.c:1253:        .write_iter =   ffs_epfile_write_iter,
drivers/usb/gadget/legacy/inode.c:705:  .write_iter =   ep_write_iter,
drivers/vhost/net.c:1250:       .write_iter     = vhost_net_chr_write_iter,
fs/9p/vfs_file.c:642:   .write_iter = generic_file_write_iter,
fs/9p/vfs_file.c:653:   .write_iter = generic_file_write_iter,
fs/9p/vfs_file.c:665:   .write_iter = v9fs_file_write_iter,
fs/9p/vfs_file.c:676:   .write_iter = v9fs_file_write_iter,
fs/9p/vfs_file.c:688:   .write_iter = v9fs_mmap_file_write_iter,
fs/9p/vfs_file.c:699:   .write_iter = v9fs_mmap_file_write_iter,
fs/adfs/file.c:29:      .write_iter     = generic_file_write_iter,
fs/affs/file.c:972:     .write_iter     = generic_file_write_iter,
fs/afs/file.c:37:       .write_iter     = afs_file_write,
fs/bfs/file.c:27:       .write_iter     = generic_file_write_iter,
fs/btrfs/file.c:3078:   .write_iter     = btrfs_file_write_iter,
fs/cifs/cifsfs.c:1064:  .write_iter = cifs_file_write_iter,
fs/cifs/cifsfs.c:1082:  .write_iter = cifs_strict_writev,
fs/cifs/cifsfs.c:1101:  .write_iter = cifs_user_writev,  
fs/cifs/cifsfs.c:1119:  .write_iter = cifs_file_write_iter,
fs/cifs/cifsfs.c:1136:  .write_iter = cifs_strict_writev,
fs/cifs/cifsfs.c:1154:  .write_iter = cifs_user_writev,
fs/coda/file.c:202:     .write_iter     = coda_file_write_iter,
fs/ecryptfs/file.c:414: .write_iter = generic_file_write_iter,
fs/fat/file.c:175:      .write_iter     = generic_file_write_iter,
fs/fuse/cuse.c:181:     .write_iter             = cuse_write_iter,
fs/fuse/file.c:3010:    .write_iter     = fuse_file_write_iter,
fs/fuse/file.c:3028:    .write_iter     = fuse_direct_write_iter,
fs/hfs/inode.c:681:     .write_iter     = generic_file_write_iter,
fs/hfsplus/inode.c:347: .write_iter     = generic_file_write_iter,
fs/hostfs/hostfs_kern.c:392:    .write_iter     = generic_file_write_iter,
fs/hpfs/file.c:211:     .write_iter     = generic_file_write_iter,
fs/jffs2/file.c:55:     .write_iter =   generic_file_write_iter,
fs/minix/file.c:18:     .write_iter     = generic_file_write_iter,
fs/ncpfs/file.c:249:    .write_iter     = ncp_file_write_iter,
fs/nilfs2/file.c:143:   .write_iter     = generic_file_write_iter,
fs/ntfs/file.c:2024:    .write_iter     = ntfs_file_write_iter,
fs/omfs/file.c:341:     .write_iter = generic_file_write_iter,
fs/orangefs/devorangefs-req.c:834:      .write_iter = orangefs_devreq_write_iter,
fs/orangefs/file.c:744: .write_iter     = orangefs_file_write_iter,
fs/sysv/file.c:25:      .write_iter     = generic_file_write_iter,
fs/udf/file.c:244:      .write_iter             = udf_file_write_iter,
fs/ufs/file.c:39:       .write_iter     = generic_file_write_iter,
kernel/printk/printk.c:999:     .write_iter = devkmsg_write,
sound/core/pcm_native.c:3682:           .write_iter =           snd_pcm_writev,

adfs, affs, afs, bfs, btrfs, coda, fat, ecryptfs, hfs, hfsplus, hostfs, hpfs,
jffs2, minix, ncpfs, nilfs2, omfs, orangefs, sysv, udf, ufs: should be OK
ntfs: probably OK
9p: depends upon p9_client_write() safety, very likely to be OK.
cifs: probably OK
fuse/cuse: might be OK, needs testing
lustre: probably OK
drivers/char/mem: ought to use splice_write_null(), actually.
drivers/char/raw: should be OK
gadgetfs: needs testing, might be OK
bluetooth, orangefs devreq, devkmsg, tun/tap, vhost: will break.  These are
datagram-oriented and currently pipe buffers  serve as datagram boundaries.
With this change the would get concatenated, with bogus results.
hypfs, infinibarf, sound: fuck, no



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