Re: [PATCH] reserved buffers only for PF_MEMALLOC

From: Matt Domsch
Date: Thu Oct 21 2004 - 23:57:17 EST


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 & www.dell.com/linux
Linux on Dell mailing lists @ http://lists.us.dell.com
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/