Re: [BUG] loop.c oopses

Andrew Morton (akpm@zip.com.au)
Tue, 16 Jul 2002 02:19:46 -0700


William Lee Irwin III wrote:
>
> Jens Axboe wrote:
> >> GFP_NOIO has __GFP_WAIT set, so bio_copy -> bio_alloc -> mempool_alloc
> >> should never fail. Puzzled.
>
> On Tue, Jul 16, 2002 at 01:52:40AM -0700, Andrew Morton wrote:
> > Presumably the loop driver was called from within shrink_cache(),
> > as PF_MEMALLOC. Those allocations can fail.
> > That's maybe wrong - if there are a decent number of pages
> > under writeback then we should be able to just wait it out.
> > But it gets tricky with the loop driver...
>
> I included a backtrace in my original post showing that the allocation
> failure did indeed occur beneath shrink_cache().
>
> >From watching /proc/meminfo it was clear that there were only 1MB or
> 2MB under writeback, but it also showed that the dirty memory thresholds
> were being exceeded.

Ah, that may well happen with loop. Mark a page clean, "submit"
it and that just goes and marks a different page dirty.

If you could please share the setup details (amount of memory,
file sizes, workload etc) I'll have a look.

btw, Jens: where do the pages which bio_copy allocates get freed?

-
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/