LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH -mm 0/10][RFC] aio: make struct kiocb private
@ 2007-01-16  1:54 Nate Diller
  2007-01-16  1:54 ` [PATCH -mm 7/10][RFC] aio: make __blockdev_direct_IO use file_endio_t Nate Diller
                   ` (10 more replies)
  0 siblings, 11 replies; 28+ messages in thread
From: Nate Diller @ 2007-01-16  1:54 UTC (permalink / raw)
  To: Nate Diller, Andrew Morton, Alan Cox, Trond Myklebust,
	Benjamin LaHaise, Alexander Viro, Suparna Bhattacharya,
	Kenneth W Chen, David Brownell, Christoph Hellwig
  Cc: linux-kernel, linux-fsdevel, netdev, ocfs2-devel, linux-aio, xfs-masters

This series is an attempt to generalize the async I/O paths to be
implementation agnostic.  It completely eliminates knowledge of
the kiocb structure in the generic code and makes it private within the
current aio code.  Things get noticeably cleaner without that layering
violation.

The new interface takes a file_endio_t function pointer, and a private data
pointer, which would normally be aio_complete and a kiocb pointer,
respectively.  If the aio submission function gets back EIOCBQUEUED, that is
a guarantee that the endio function will be called, or *already has been
called*.  If the file_endio_t pointer provided to aio_[read|write] is NULL,
the FS must block on I/O completion, then return either the number of bytes
read, or an error.

I had to touch more areas that I had originally expected, so there are
changes in a corner of the socket code, and a slight behavior change in the
direct-io completion path with affects XFS and OCFS2.  I would appreciate
further review there, so I copied some extra people I hope can help.

This patch is against 2.6.20-rc4-mm1.  It has been compile-tested at each
stage.  It needs some runtime testing yet, but I prefer to get it out for
commentary and test later.

These patches are for RFC only and have not yet been signed off.

NATE

---

 Documentation/filesystems/Locking |   11 +
 Documentation/filesystems/vfs.txt |   11 +
 arch/s390/hypfs/inode.c           |   16 +-
 drivers/net/pppoe.c               |    8 -
 drivers/net/tun.c                 |   13 +-
 drivers/usb/gadget/inode.c        |  239 +-------------------------------------
 fs/aio.c                          |   74 ++++++-----
 fs/bad_inode.c                    |   10 -
 fs/block_dev.c                    |  109 +++++++++++------
 fs/cifs/cifsfs.c                  |   10 -
 fs/compat.c                       |   56 --------
 fs/direct-io.c                    |   92 ++++++++------
 fs/ecryptfs/file.c                |   16 +-
 fs/ext2/inode.c                   |   12 -
 fs/ext3/file.c                    |    9 -
 fs/ext3/inode.c                   |   11 -
 fs/ext4/file.c                    |    9 -
 fs/ext4/inode.c                   |   11 -
 fs/fat/inode.c                    |   12 -
 fs/fuse/dev.c                     |   13 +-
 fs/gfs2/ops_address.c             |   14 +-
 fs/hfs/inode.c                    |   13 --
 fs/hfsplus/inode.c                |   13 --
 fs/jfs/inode.c                    |   12 -
 fs/nfs/direct.c                   |   92 +++++++-------
 fs/nfs/file.c                     |   62 +++++----
 fs/ntfs/file.c                    |   71 ++---------
 fs/ocfs2/aops.c                   |   24 +--
 fs/ocfs2/aops.h                   |    8 -
 fs/ocfs2/file.c                   |   44 +++---
 fs/ocfs2/inode.h                  |    2 
 fs/pipe.c                         |   12 -
 fs/read_write.c                   |  225 ++++++++++++-----------------------
 fs/read_write.h                   |    8 -
 fs/reiserfs/inode.c               |   13 --
 fs/smbfs/file.c                   |   28 ++--
 fs/udf/file.c                     |   13 +-
 fs/xfs/linux-2.6/xfs_aops.c       |   44 +++---
 fs/xfs/linux-2.6/xfs_file.c       |   58 +++++----
 fs/xfs/linux-2.6/xfs_lrw.c        |   29 ++--
 fs/xfs/linux-2.6/xfs_lrw.h        |   10 -
 fs/xfs/linux-2.6/xfs_vnode.h      |   20 +--
 include/linux/aio.h               |   11 -
 include/linux/fs.h                |  114 +++++++++---------
 include/linux/net.h               |   18 +-
 include/linux/nfs_fs.h            |   12 -
 include/net/bluetooth/bluetooth.h |    2 
 include/net/inet_common.h         |    3 
 include/net/scm.h                 |    2 
 include/net/sock.h                |   45 +------
 include/net/tcp.h                 |    6 
 include/net/udp.h                 |    3 
 mm/filemap.c                      |  109 ++++++++---------
 net/appletalk/ddp.c               |    5 
 net/atm/common.c                  |    6 
 net/atm/common.h                  |    7 -
 net/ax25/af_ax25.c                |    7 -
 net/bluetooth/af_bluetooth.c      |    4 
 net/bluetooth/hci_sock.c          |    7 -
 net/bluetooth/l2cap.c             |    2 
 net/bluetooth/rfcomm/sock.c       |    8 -
 net/bluetooth/sco.c               |    3 
 net/core/sock.c                   |   12 -
 net/dccp/dccp.h                   |    8 -
 net/dccp/probe.c                  |    3 
 net/dccp/proto.c                  |    7 -
 net/decnet/af_decnet.c            |    7 -
 net/econet/af_econet.c            |    7 -
 net/ipv4/af_inet.c                |    5 
 net/ipv4/raw.c                    |    8 -
 net/ipv4/tcp.c                    |    7 -
 net/ipv4/tcp_probe.c              |    3 
 net/ipv4/udp.c                    |    9 -
 net/ipv4/udp_impl.h               |    2 
 net/ipv6/raw.c                    |    6 
 net/ipv6/udp.c                    |   10 -
 net/ipv6/udp_impl.h               |    6 
 net/ipx/af_ipx.c                  |    7 -
 net/irda/af_irda.c                |   29 ++--
 net/key/af_key.c                  |    6 
 net/llc/af_llc.c                  |    7 -
 net/netlink/af_netlink.c          |   24 +--
 net/netrom/af_netrom.c            |    7 -
 net/packet/af_packet.c            |   11 -
 net/rose/af_rose.c                |    7 -
 net/sctp/socket.c                 |    9 -
 net/socket.c                      |  199 +++++++++----------------------
 net/tipc/socket.c                 |   28 +---
 net/unix/af_unix.c                |  116 +++++++-----------
 net/wanrouter/af_wanpipe.c        |    7 -
 net/x25/af_x25.c                  |    6 
 sound/core/pcm_native.c           |   15 +-
 92 files changed, 1009 insertions(+), 1500 deletions(-)

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2007-01-18 21:40 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-01-16  1:54 [PATCH -mm 0/10][RFC] aio: make struct kiocb private Nate Diller
2007-01-16  1:54 ` [PATCH -mm 7/10][RFC] aio: make __blockdev_direct_IO use file_endio_t Nate Diller
2007-01-16  1:54 ` [PATCH -mm 4/10][RFC] aio: convert aio_complete to file_endio_t Nate Diller
2007-01-16  5:53   ` David Brownell
2007-01-16  9:21     ` Nate Diller
2007-01-16  1:54 ` [PATCH -mm 5/10][RFC] aio: make blk_directIO use file_endio_t Nate Diller
2007-01-16  1:54 ` [PATCH -mm 8/10][RFC] aio: make direct_IO aops " Nate Diller
2007-01-16  1:54 ` [PATCH -mm 1/10][RFC] aio: scm remove struct siocb Nate Diller
2007-01-16  1:54 ` [PATCH -mm 6/10][RFC] aio: make nfs_directIO use file_endio_t Nate Diller
2007-01-16  1:54 ` [PATCH -mm 10/10][RFC] aio: convert file aio to file_endio_t Nate Diller
2007-01-16  1:54 ` [PATCH -mm 2/10][RFC] aio: net use struct socket for io Nate Diller
2007-01-16  5:44   ` Stephen Hemminger
2007-01-16 10:24     ` Evgeniy Polyakov
2007-01-16  1:54 ` [PATCH -mm 9/10][RFC] aio: usb gadget remove aio file ops Nate Diller
2007-01-16  6:05   ` David Brownell
2007-01-16  9:13     ` Nate Diller
2007-01-16 18:36       ` David Brownell
2007-01-16  1:54 ` [PATCH -mm 3/10][RFC] aio: use iov_length instead of ki_left Nate Diller
2007-01-16  2:14   ` Christoph Hellwig
2007-01-16  5:37     ` Nate Diller
2007-01-16 23:36       ` Ingo Oeser
2007-01-18  4:27     ` Vectored AIO breakage for sockets and pipes ? Suparna Bhattacharya
2007-01-18 21:40       ` Zach Brown
2007-01-16  3:23 ` [PATCH -mm 0/10][RFC] aio: make struct kiocb private Christoph Hellwig
2007-01-16  4:25   ` Nate Diller
2007-01-16  8:22     ` David Brownell
2007-01-17 21:52     ` Benjamin LaHaise
2007-01-17 23:30       ` Nate Diller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).