2004-10-20 14:25:27

by Matt Domsch

[permalink] [raw]
Subject: Re: [PATCH] reserved buffers only for PF_MEMALLOC

On Tue, Aug 10, 2004 at 05:16:52PM -0300, Marcelo Tosatti wrote:
> On Tue, Aug 10, 2004 at 01:20:24PM -0400, Rik van Riel wrote:
> >
> > The buffer allocation path in 2.4 has a long standing bug,
> > where non-PF_MEMALLOC tasks can dig into the reserved pool
> > in get_unused_buffer_head(). The following patch makes the
> > reserved pool only accessible to PF_MEMALLOC tasks.
> >
> > Other processes will loop in create_buffers() - the only
> > function that calls get_unused_buffer_head() - and will call
> > try_to_free_pages(GFP_NOIO), freeing any buffer heads that
> > have become freeable due to IO completion.
> >
> > Note that PF_MEMALLOC tasks will NOT do anything inside
> > try_to_free_pages(), so it is needed that they are able to
> > dig into the reserved buffer heads while other tasks are
> > not.
>
> Applied.
>
> Matt, it would be really nice if you could run the workload
> which triggers the deadlock on 2.4.27+Rik's patch.

Sorry for the long delay. kernel 2.4.28-pre3 has been running under
load for 12 days, where otherwise we would have expected a failure in
less than 1 day. I'm satisfied this is the right thing to have done.

Thanks,
Matt

--
Matt Domsch
Sr. Software Engineer, Lead Engineer
Dell Linux Solutions linux.dell.com & http://www.dell.com/linux
Linux on Dell mailing lists @ http://lists.us.dell.com