From: Zach Brown <zab@zabbo.net> To: Ming Lei <ming.lei@canonical.com> Cc: Jens Axboe <axboe@kernel.dk>, linux-kernel@vger.kernel.org, Andrew Morton <akpm@linux-foundation.org>, Dave Kleikamp <dave.kleikamp@oracle.com>, Benjamin LaHaise <bcrl@kvack.org>, Christoph Hellwig <hch@infradead.org>, Kent Overstreet <kmo@daterainc.com>, linux-aio@kvack.org, linux-fsdevel@vger.kernel.org, Dave Chinner <david@fromorbit.com>, Alexander Viro <viro@zeniv.linux.org.uk> Subject: Re: [PATCH v1 1/9] aio: add aio_kernel_() interface Date: Thu, 14 Aug 2014 11:07:51 -0700 [thread overview] Message-ID: <20140814180751.GB429@lenny.home.zabbo.net> (raw) In-Reply-To: <1408031441-31156-2-git-send-email-ming.lei@canonical.com> On Thu, Aug 14, 2014 at 11:50:32PM +0800, Ming Lei wrote: > From: Dave Kleikamp <dave.kleikamp@oracle.com> > > This adds an interface that lets kernel callers submit aio iocbs without > going through the user space syscalls. This lets kernel callers avoid > the management limits and overhead of the context. It will also let us > integrate aio operations with other kernel apis that the user space > interface doesn't have access to. > > This patch is based on Dave's posts in below links: > > https://lkml.org/lkml/2013/10/16/365 > https://groups.google.com/forum/#!topic/linux.kernel/l7mogGJZoKQ (And some other werido's posts, almost 5 entire earth years ago: http://permalink.gmane.org/gmane.linux.file-systems/36246) > +struct kiocb *aio_kernel_alloc(gfp_t gfp, unsigned extra) > +{ > + return kzalloc(sizeof(struct kiocb) + extra, gfp); Is kzalloc really necessary? It's insane, but in the past we've had people whine about the cycle costs of zeroing fields that are to be initialized: commit 23aee091d804efa8cc732a31c1ae5d625e1ec886 Author: Jeff Moyer <jmoyer@redhat.com> Date: Tue Dec 15 16:47:49 2009 -0800 dio: don't zero out the pages array inside struct dio Maybe add a guard value to the ctx and have submission freak out of it's called without being initialized? If callers really want to zero they can pass in __GFP_ZERO. The extra allocation at the end that's freed is nice, but the callers having a clumsy manual cast to access it isn't nice at all. Can you add a little helper to get a pointer to the extra allocation? That'd let the aio bits allocation the iocbs however the like (slab, per-cpu, whatever) and have extra allocations separate if that ends up making sense. > + iocb->ki_ctx = (void *)-1; The magic -1 is gross. Use a constant? (bonus points for having it use ERR_PTR() :)) > + /* > + * use same policy with userspace aio, req may have been > + * completed already, so release it by aio completion. > + */ > + if (ret != -EIOCBQUEUED) > + iocb->ki_obj.complete(iocb->ki_user_data, ret); I wonder if this needs to handle the restarting error codes like aio_complete() does. commit a0c42bac79731276c9b2f28d54f9e658fcf843a2 Author: Jan Kara <jack@suse.cz> Date: Wed Sep 22 13:05:03 2010 -0700 aio: do not return ERESTARTSYS as a result of AIO I like how this has evolved to get rid of the magic key and commands.. just the ki_ctx and calling iter methods, nice stuff. - z
WARNING: multiple messages have this Message-ID (diff)
From: Zach Brown <zab@zabbo.net> To: Ming Lei <ming.lei@canonical.com> Cc: Jens Axboe <axboe@kernel.dk>, linux-kernel@vger.kernel.org, Andrew Morton <akpm@linux-foundation.org>, Dave Kleikamp <dave.kleikamp@oracle.com>, Benjamin LaHaise <bcrl@kvack.org>, Christoph Hellwig <hch@infradead.org>, Kent Overstreet <kmo@daterainc.com>, linux-aio@kvack.org, linux-fsdevel@vger.kernel.org, Dave Chinner <david@fromorbit.com>, Alexander Viro <viro@zeniv.linux.org.uk> Subject: Re: [PATCH v1 1/9] aio: add aio_kernel_() interface Date: Thu, 14 Aug 2014 11:07:51 -0700 [thread overview] Message-ID: <20140814180751.GB429@lenny.home.zabbo.net> (raw) In-Reply-To: <1408031441-31156-2-git-send-email-ming.lei@canonical.com> On Thu, Aug 14, 2014 at 11:50:32PM +0800, Ming Lei wrote: > From: Dave Kleikamp <dave.kleikamp@oracle.com> > > This adds an interface that lets kernel callers submit aio iocbs without > going through the user space syscalls. This lets kernel callers avoid > the management limits and overhead of the context. It will also let us > integrate aio operations with other kernel apis that the user space > interface doesn't have access to. > > This patch is based on Dave's posts in below links: > > https://lkml.org/lkml/2013/10/16/365 > https://groups.google.com/forum/#!topic/linux.kernel/l7mogGJZoKQ (And some other werido's posts, almost 5 entire earth years ago: http://permalink.gmane.org/gmane.linux.file-systems/36246) > +struct kiocb *aio_kernel_alloc(gfp_t gfp, unsigned extra) > +{ > + return kzalloc(sizeof(struct kiocb) + extra, gfp); Is kzalloc really necessary? It's insane, but in the past we've had people whine about the cycle costs of zeroing fields that are to be initialized: commit 23aee091d804efa8cc732a31c1ae5d625e1ec886 Author: Jeff Moyer <jmoyer@redhat.com> Date: Tue Dec 15 16:47:49 2009 -0800 dio: don't zero out the pages array inside struct dio Maybe add a guard value to the ctx and have submission freak out of it's called without being initialized? If callers really want to zero they can pass in __GFP_ZERO. The extra allocation at the end that's freed is nice, but the callers having a clumsy manual cast to access it isn't nice at all. Can you add a little helper to get a pointer to the extra allocation? That'd let the aio bits allocation the iocbs however the like (slab, per-cpu, whatever) and have extra allocations separate if that ends up making sense. > + iocb->ki_ctx = (void *)-1; The magic -1 is gross. Use a constant? (bonus points for having it use ERR_PTR() :)) > + /* > + * use same policy with userspace aio, req may have been > + * completed already, so release it by aio completion. > + */ > + if (ret != -EIOCBQUEUED) > + iocb->ki_obj.complete(iocb->ki_user_data, ret); I wonder if this needs to handle the restarting error codes like aio_complete() does. commit a0c42bac79731276c9b2f28d54f9e658fcf843a2 Author: Jan Kara <jack@suse.cz> Date: Wed Sep 22 13:05:03 2010 -0700 aio: do not return ERESTARTSYS as a result of AIO I like how this has evolved to get rid of the magic key and commands.. just the ki_ctx and calling iter methods, nice stuff. - z -- To unsubscribe, send a message with 'unsubscribe linux-aio' in the body to majordomo@kvack.org. For more info on Linux AIO, see: http://www.kvack.org/aio/ Don't email: <a href=mailto:"aart@kvack.org">aart@kvack.org</a>
next prev parent reply other threads:[~2014-08-14 18:07 UTC|newest] Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-08-14 15:50 [PATCH v1 0/9] block & aio: kernel aio and loop mq conversion Ming Lei 2014-08-14 15:50 ` Ming Lei 2014-08-14 15:50 ` [PATCH v1 1/9] aio: add aio_kernel_() interface Ming Lei 2014-08-14 15:50 ` Ming Lei 2014-08-14 18:07 ` Zach Brown [this message] 2014-08-14 18:07 ` Zach Brown 2014-08-15 13:20 ` Ming Lei 2014-08-15 13:20 ` Ming Lei 2014-08-14 15:50 ` [PATCH v1 2/9] fd/direct-io: introduce should_dirty for kernel aio Ming Lei 2014-08-14 15:50 ` Ming Lei 2014-08-14 15:50 ` [PATCH v1 3/9] blk-mq: export blk_mq_freeze_queue and blk_mq_unfreeze_queue Ming Lei 2014-08-14 15:50 ` Ming Lei 2014-08-14 15:50 ` [PATCH v1 4/9] blk-mq: introduce init_flush_rq_fn callback in 'blk_mq_ops' Ming Lei 2014-08-14 15:50 ` Ming Lei 2014-08-15 16:19 ` Jens Axboe 2014-08-15 16:19 ` Jens Axboe 2014-08-16 7:49 ` Ming Lei 2014-08-16 7:49 ` Ming Lei 2014-08-17 18:39 ` Jens Axboe 2014-08-17 18:39 ` Jens Axboe 2014-08-14 15:50 ` [PATCH v1 5/9] block: loop: convert to blk-mq Ming Lei 2014-08-14 15:50 ` Ming Lei 2014-08-15 16:31 ` Christoph Hellwig 2014-08-15 16:31 ` Christoph Hellwig 2014-08-15 16:36 ` Jens Axboe 2014-08-15 16:46 ` Jens Axboe 2014-08-16 8:06 ` Ming Lei 2014-08-16 8:06 ` Ming Lei 2014-08-17 17:48 ` Jens Axboe 2014-08-17 17:48 ` Jens Axboe 2014-08-18 1:22 ` Ming Lei 2014-08-18 1:22 ` Ming Lei 2014-08-18 11:53 ` Ming Lei 2014-08-18 11:53 ` Ming Lei 2014-08-19 20:50 ` Jens Axboe 2014-08-20 1:23 ` Ming Lei 2014-08-20 16:09 ` Jens Axboe 2014-08-21 2:54 ` Ming Lei 2014-08-21 2:58 ` Jens Axboe 2014-08-21 3:13 ` Ming Lei 2014-08-21 3:15 ` Ming Lei 2014-08-21 3:16 ` Jens Axboe 2014-08-21 3:34 ` Ming Lei 2014-08-21 5:44 ` Ming Lei 2014-08-27 16:08 ` Maxim Patlasov 2014-08-27 16:08 ` Maxim Patlasov 2014-08-27 16:29 ` Benjamin LaHaise 2014-08-27 16:29 ` Benjamin LaHaise 2014-08-27 17:19 ` Maxim Patlasov 2014-08-27 17:19 ` Maxim Patlasov 2014-08-27 17:56 ` Zach Brown 2014-08-27 17:56 ` Zach Brown 2014-08-28 2:10 ` Ming Lei 2014-08-28 2:10 ` Ming Lei 2014-08-28 2:06 ` Ming Lei 2014-08-28 2:06 ` Ming Lei 2014-08-29 11:14 ` Maxim Patlasov 2014-08-29 11:14 ` Maxim Patlasov 2014-08-14 15:50 ` [PATCH v1 6/9] block: loop: say goodby to bio Ming Lei 2014-08-14 15:50 ` Ming Lei 2014-08-14 15:50 ` [PATCH v1 7/9] block: loop: introduce lo_discard() and lo_req_flush() Ming Lei 2014-08-14 15:50 ` Ming Lei 2014-08-14 15:50 ` [PATCH v1 8/9] block: loop: don't handle REQ_FUA explicitly Ming Lei 2014-08-14 15:50 ` Ming Lei 2014-08-14 15:50 ` [PATCH v1 9/9] block: loop: support to submit I/O via kernel aio based Ming Lei 2014-08-14 15:50 ` Ming Lei 2014-08-14 16:53 ` [PATCH v1 0/9] block & aio: kernel aio and loop mq conversion Jens Axboe 2014-08-14 16:53 ` Jens Axboe 2014-08-15 12:59 ` Ming Lei 2014-08-15 12:59 ` Ming Lei 2014-08-15 13:11 ` Christoph Hellwig 2014-08-15 13:11 ` Christoph Hellwig 2014-08-15 14:32 ` Ming Lei 2014-08-15 14:32 ` Ming Lei
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=20140814180751.GB429@lenny.home.zabbo.net \ --to=zab@zabbo.net \ --cc=akpm@linux-foundation.org \ --cc=axboe@kernel.dk \ --cc=bcrl@kvack.org \ --cc=dave.kleikamp@oracle.com \ --cc=david@fromorbit.com \ --cc=hch@infradead.org \ --cc=kmo@daterainc.com \ --cc=linux-aio@kvack.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=ming.lei@canonical.com \ --cc=viro@zeniv.linux.org.uk \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.