Re: [RFC] changes to buffer.c (was Test12 ll_rw_block error)

Chris Mason
2001-01-05T19:51:45Z

On Friday, January 05, 2001 01:43:07 PM -0200 Marcelo Tosatti
<marcelo@conectiva.com.br> wrote:

>
> On Fri, 5 Jan 2001, Chris Mason wrote:
>
>>
>> Here's the latest version of the patch, against 2.4.0. The
>> biggest open issues are what to do with bdflush, since
>> page_launder could do everything bdflush does.
>
> I think we want to remove flush_dirty_buffers() from bdflush.
>

Whoops. If bdflush doesn't balance the dirty list, who does?

But, we can do this in bdflush:

if (free_shortage())
flushed = page_launder(GFP_KERNEL, 0) ;
else
flushed = flush_dirty_buffers(0) ;

The idea is that page_launder knows best which pages to free when memory is
low, and flush_dirty_buffers knows best which pages to write when things
are unbalanced. Not the cleanest idea ever, since I'd prefer the first
pages written when we need balancing are also the ones most likely to be
freed by page_launder.

In other words, I'd like to make a flush_inactive_dirty() inside
mm/vmscan.c, and have bdflush call that before working on the buffer cache
dirty list.

-chris