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)
Where the buffer head X going in the top of the stack is the same as the one
we wait on at the bottom.
There still seems to be nothing to prevent the try to free buffers from
blocking on a buffer like this. Setting a flag on the buffer around the
create_bounce call, and skipping it in the try_to_free_buffers path would
be one approach to avoiding this.
I hit this in 2.4.6-pre6, and I don't see anything in the ac series to protect
against it.
Steve
-
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/