LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Nate Diller <nate@agami.com>
To: Nate Diller <nate.diller@gmail.com>,
	Andrew Morton <akpm@osdl.org>,
	Alan Cox <alan@lxorguk.ukuu.org.uk>,
	Trond Myklebust <trond.myklebust@fys.uio.no>,
	Benjamin LaHaise <bcrl@kvack.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Suparna Bhattacharya <suparna@in.ibm.com>,
	Kenneth W Chen <kenneth.w.chen@intel.com>,
	David Brownell <dbrownell@users.sourceforge.net>,
	Christoph Hellwig <hch@infradead.org>
Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	netdev@vger.kernel.org, ocfs2-devel@oss.oracle.com,
	linux-aio@kvack.org, xfs-masters@oss.sgi.com
Subject: [PATCH -mm 0/10][RFC] aio: make struct kiocb private
Date: Mon, 15 Jan 2007 17:54:50 -0800	[thread overview]
Message-ID: <20070116015450.9764.37697.patchbomb.py@nate-64.agami.com> (raw)

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(-)

             reply	other threads:[~2007-01-16  2:03 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-01-16  1:54 Nate Diller [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070116015450.9764.37697.patchbomb.py@nate-64.agami.com \
    --to=nate@agami.com \
    --cc=akpm@osdl.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=bcrl@kvack.org \
    --cc=dbrownell@users.sourceforge.net \
    --cc=hch@infradead.org \
    --cc=kenneth.w.chen@intel.com \
    --cc=linux-aio@kvack.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nate.diller@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=ocfs2-devel@oss.oracle.com \
    --cc=suparna@in.ibm.com \
    --cc=trond.myklebust@fys.uio.no \
    --cc=viro@zeniv.linux.org.uk \
    --cc=xfs-masters@oss.sgi.com \
    --subject='Re: [PATCH -mm 0/10][RFC] aio: make struct kiocb private' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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).