* Peter Zijlstra (peterz@xxxxxxxxxxxxx) wrote: > On Mon, 2010-05-17 at 18:42 -0400, Mathieu Desnoyers wrote: > > I'll continue to look into this. One of the things I noticed that that we could > > possibly use the "steal()" operation to steal the pages back from the page cache > > to repopulate the ring buffer rather than continuously allocating new pages. If > > steal() fails for some reasons, then we can fall back on page allocation. I'm > > not sure it is safe to assume anything about pages being in the page cache > > though. > > Also, suppose it was still in the page-cache and still dirty, a steal() > would then punch a hole in the file. page_cache_pipe_buf_steal starts by doing a wait_on_page_writeback(page); and then does a try_to_release_page(page, GFP_KERNEL). Only if that succeeds is the action of stealing succeeding. > > > Maybe the safest route is to just allocate new pages for now. > > Yes, that seems to be the only sane approach. Yes, a good start anyway. Thanks, Mathieu -- Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>