On Tue, Jan 27, 2015 at 1:00 AM, Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote: > On Tue, Jan 27, 2015 at 12:18:23AM +0800, Ming Lei wrote: >> > Also it might make sense to just offer aio_kernel_read/write intefaces >> > instead of the common submit wrapper, as that's much closer to other >> > kernel APIs, e.g. >> > >> > int aio_kernel_read(struct kiocb *iocb, struct file *file, >> > struct iov_iter *iter, loff_t off, >> > void (*complete)(struct kiocb *iocb, long res)); >> > int aio_kernel_write(struct kiocb *iocb, struct file *file, >> > struct iov_iter *iter, loff_t off, >> > void (*complete)(struct kiocb *iocb, long res)); >> >> It is like style of sync APIs, looks submit/complete is common >> for async APIs, like io_submit(). > > io_submit is a fairly horrible API. While Posix AIO isn't too much > better it does have separate APIs for read/write. Given that there > isn't much code shared I'd keep an API that feels familar. But from performance view, the two APIs of aio_kernel_read() and aio_kernel_write() aren't good because both need 5 parameters which can't be held in registers and they are often called from single thread context, not like synchronized read() and write(). Also aio_kernel_init_rw() can be moved to header file as inline to avoid too many parameters. Thanks, Ming Lei -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html