fs: split generic and aio kiocb
authorChristoph Hellwig <hch@lst.de>
Mon, 2 Feb 2015 13:49:06 +0000 (14:49 +0100)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 13 Mar 2015 16:10:27 +0000 (12:10 -0400)
commit04b2fa9f8f36ec6fb6fd1c9dc9df6fff0cd27323
treef9fdc8004b4decca27e30da1614529eaf1455136
parent599bd19bdc4c6b20fd91d50f2f79dececbaf80c1
fs: split generic and aio kiocb

Most callers in the kernel want to perform synchronous file I/O, but
still have to bloat the stack with a full struct kiocb.  Split out
the parts needed in filesystem code from those in the aio code, and
only allocate those needed to pass down argument on the stack.  The
aio code embedds the generic iocb in the one it allocates and can
easily get back to it by using container_of.

Also add a ->ki_complete method to struct kiocb, this is used to call
into the aio code and thus removes the dependency on aio for filesystems
impementing asynchronous operations.  It will also allow other callers
to substitute their own completion callback.

We also add a new ->ki_flags field to work around the nasty layering
violation recently introduced in commit 5e33f6 ("usb: gadget: ffs: add
eventfd notification about ffs events").

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
drivers/usb/gadget/function/f_fs.c
drivers/usb/gadget/legacy/inode.c
fs/aio.c
fs/direct-io.c
fs/fuse/file.c
fs/nfs/direct.c
include/linux/aio.h