Thread (39 messages) 39 messages, 7 authors, 2017-03-09

Re: [PATCH 3/8] nowait aio: return if direct write will trigger writeback

From: Jan Kara <jack@suse.cz>
Date: 2017-03-02 11:16:20
Also in: linux-block, linux-btrfs, linux-fsdevel, linux-xfs

On Wed 01-03-17 07:38:57, Christoph Hellwig wrote:
On Tue, Feb 28, 2017 at 07:46:06PM -0800, Matthew Wilcox wrote:
quoted
Ugh, this is pretty inefficient.  If that's all you want to know, then
using the radix tree directly will be far more efficient than spinning
up all the pagevec machinery only to discard the pages found.

But what's going to kick these pages out of cache?  Shouldn't we rather
find the pages, kick them out if clean, start writeback if not, and *then*
return -EAGAIN?

So maybe we want to spin up the pagevec machinery after all so we can
do that extra work?
As pointed out in the last round of these patches I think we really
need to pass a flags argument to filemap_write_and_wait_range to
communicate the non-blocking nature and only return -EAGAIN if we'd
block.  As a bonus that can indeed start to kick the pages out.
Aren't flags to filemap_write_and_wait_range() unnecessary complication?
Realistically, most users wanting performance from AIO DIO so badly that
they bother with this API won't have any pages to write / evict. If they do
by some bad accident, they can fall back to standard "blocking" AIO DIO.
So I don't see much value in teaching filemap_write_and_wait_range() about
a non-blocking mode...

								Honza

-- 
Jan Kara [off-list ref]
SUSE Labs, CR
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help