linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC] loop: issue aio with pages
@ 2009-10-22 20:25 Zach Brown
  2009-10-22 20:25 ` [PATCH 1/8] gadgetfs: use schedule_work() instead of EIOCBRETRY Zach Brown
  2009-10-25  7:36 ` [RFC] loop: issue aio with pages Christoph Hellwig
  0 siblings, 2 replies; 24+ messages in thread
From: Zach Brown @ 2009-10-22 20:25 UTC (permalink / raw)
  To: linux-fsdevel


This patch series adds a kernel interface to fs/aio.c so that kernel code can
issue concurrent asynchronous IO to file systems.  It adds an aio command and
file system methods which specify io memory with pages instead of userspace
addresses.  

This series was written to reduce the current overhead loop imposes by
performing synchronus buffered file system IO from a kernel thread.  These
patches turn loop into a light weight layer that translates bios into iocbs.
knfsd might also want to use these interfaces to perform file IO.

Initial results are encouraging.  Before loop over a block device would cut
random concurrent read performance in half.  With this series reading from loop
performs the same as reading from the underlying device.

But the series is still a prototype.  Only blockdev has the methods implemented
and only for O_DIRECT.  It'll take more work to get pages passed in to file
system methods, through generic code, and down to fs/direct-io.c.

I'm sending this now so that we can decide if we want to pursue this and the
direction it should head in before I get too lost updating file systems to know
how to work with pages. 

Thoughts?

I think my current preference is to follow the current strategy of adding a new
file op method instead of trying to get fancy by changing the types of existing
methods to take some abstract memory specifier.  We'll see if it's feasible to
rework the generic code around iovecs and pages by converting a few file
systems.

- z

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

end of thread, other threads:[~2009-10-27 17:52 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-22 20:25 [RFC] loop: issue aio with pages Zach Brown
2009-10-22 20:25 ` [PATCH 1/8] gadgetfs: use schedule_work() instead of EIOCBRETRY Zach Brown
2009-10-22 20:25   ` [PATCH 2/8] aio: disable retry Zach Brown
2009-10-22 20:25     ` [PATCH 3/8] aio: add an interface to submit aio from the kernel Zach Brown
2009-10-22 20:25       ` [PATCH 4/8] aio: add aio_read_pages and aio_write_pages Zach Brown
2009-10-22 20:25         ` [PATCH 5/8] dio: refactor __blockdev_direct_IO() Zach Brown
2009-10-22 20:25           ` [PATCH 6/8] dio: add an entry point which takes pages Zach Brown
2009-10-22 20:25             ` [PATCH 7/8] block: provide aio_read_pages and aio_write_pages Zach Brown
2009-10-22 20:25               ` [PATCH 8/8] loop: use aio to perform io on the underlying file Zach Brown
2009-10-27 16:01                 ` Jeff Moyer
2009-10-27 15:49             ` [PATCH 6/8] dio: add an entry point which takes pages Jeff Moyer
2009-10-27 17:50               ` Zach Brown
2009-10-27 15:39           ` [PATCH 5/8] dio: refactor __blockdev_direct_IO() Jeff Moyer
2009-10-26 16:17         ` [PATCH 4/8] aio: add aio_read_pages and aio_write_pages Jeff Moyer
2009-10-26 17:08           ` Jeff Moyer
2009-10-26 22:22             ` Zach Brown
2009-10-26 16:10       ` [PATCH 3/8] aio: add an interface to submit aio from the kernel Jeff Moyer
2009-10-26 22:21         ` Zach Brown
2009-10-25  7:37     ` [PATCH 2/8] aio: disable retry Christoph Hellwig
2009-10-26 22:15       ` Zach Brown
2009-10-26 16:00     ` Jeff Moyer
2009-10-26 15:57   ` [PATCH 1/8] gadgetfs: use schedule_work() instead of EIOCBRETRY Jeff Moyer
2009-10-25  7:36 ` [RFC] loop: issue aio with pages Christoph Hellwig
2009-10-26 22:13   ` Zach Brown

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