On Thu, Aug 31 2017, Mikulas Patocka wrote: >> >> Note that only current->bio_list[0] is offloaded. current->bio_list[1] >> contains bios that were scheduled *before* the current one started, so > > These bios need to be offloaded too, otherwise you re-introduce this > deadlock: https://www.redhat.com/archives/dm-devel/2014-May/msg00089.html Thanks for the link. In the example the bio that is stuck was created in step 4. The call to generic_make_request() will have placed it on current->bio_list[0]. The top-level generic_make_request call by Process A is still running, so nothing will have moved the bio to ->bio_list[1]. That only happens after the ->make_request_fn completes, which must be after step 7. So the problem bio is on ->bio_list[0] and the code in my patch will pass it to a workqueue for handling. So I don't think the deadlock would be reintroduced. Can you see something that I am missing? Thanks, NeilBrown
Attachment:
signature.asc
Description: PGP signature
-- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel