On Tue, Aug 28, 2012 at 10:37:36AM -0700, Kent Overstreet wrote: > Previously, if we ever try to allocate more than once from the same bio > set while running under generic_make_request() (i.e. a stacking block > driver), we risk deadlock. > > This is because of the code in generic_make_request() that converts > recursion to iteration; any bios we submit won't actually be submitted > (so they can complete and eventually be freed) until after we return - > this means if we allocate a second bio, we're blocking the first one > from ever being freed. > > Thus if enough threads call into a stacking block driver at the same > time with bios that need multiple splits, and the bio_set's reserve gets > used up, we deadlock. Hi Kent, So above deadlock possibility arises only if multiple threads are doing multiple splits from same pool and all the threads get blocked on mempool and don't return from ->make_request function. Is there any existing driver in the tree which can cause this deadlock or it becomes a possibility only when splitting and bcache code shows up? Thanks Vivek -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel