Messages in this thread | | | Subject | Bounce buffer deadlock | Date | Fri, 29 Jun 2001 15:33:52 -0500 | From | Steve Lord <> |
| |
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)
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/
| |