Re: Bounce buffer deadlock

Alan Cox (alan@lxorguk.ukuu.org.uk)
Fri, 29 Jun 2001 21:42:16 +0100 (BST)


> Has anyone else seen a hang like this:
>
> bdflush()
> flush_dirty_buffers()
> ll_rw_block()
> submit_bh(buffer X)
> generic_make_request()
> __make_request()
> create_bounce()
> alloc_bounce_page()
> alloc_page()
> try_to_free_pages()
> do_try_to_free_pages()
> page_launder()
> try_to_free_buffers( , 2) -- i.e. wait for buffers
> sync_page_buffers()
> __wait_on_buffer(buffer X)

Whoops. We actually carefully set PF_MEMALLOC to avoid deadlocks here but if
the buffer is laundered.... ummm

Looks like page_launder needs to be more careful

> I hit this in 2.4.6-pre6, and I don't see anything in the ac series to protect
> against it.

Not this one no

Alan

-
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/