On Tue, Aug 28, 2012 at 08:25:58PM -0700, Kent Overstreet wrote: [..] > Except that when thread a goes to punt those blocked bios to its > rescuer, it punts _all_ the bios on current->bio_list. Even those > generated by/belonging to other bio_sets. > > So thread 1 in device b punts bios to its rescuer, thread 2 > > But thread 2 ends up with bios for both device a and b - because they're > stacked. Ok, just to add more details to above example. Say we have device A stacked on top of B and B stacked on top of C. Say a bio a is submitted to device A and is splitted in two bios b1 and b2. Now b1 is sumbitted to device B and is splitted in c1 and c2. Now current bio list has three bios. b2, c1 and c2. If submitter is now about to block on any bio set, then all tree bios b2, c1, c2 will punted to rescue thread and submssion of b2 will again block resulting in blocking rescue thread itself. I would say keep all the bio splitting patches and any fixes w.r.t deadlocks in a seprate series. As this is little complicated and a lot of is just theoritical corner cases. If you limit this series to just bio_set related cleanups, it becomes more acceptable for inclusion. Thanks Vivek -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel