On Tue, Jul 12 2016, Lars Ellenberg wrote: .... > > Instead, I suggest to distinguish between recursive calls to > generic_make_request(), and pushing back the remainder part in > blk_queue_split(), by pointing current->bio_lists to a > struct recursion_to_iteration_bio_lists { > struct bio_list recursion; > struct bio_list queue; > } > > By providing each q->make_request_fn() with an empty "recursion" > bio_list, then merging any recursively submitted bios to the > head of the "queue" list, we can make the recursion-to-iteration > logic in generic_make_request() process deepest level bios first, > and "sibling" bios of the same level in "natural" order. > > Signed-off-by: Lars Ellenberg <lars.ellenberg@xxxxxxxxxx> > Signed-off-by: Roland Kammerer <roland.kammerer@xxxxxxxxxx> Reviewed-by: NeilBrown <neilb@xxxxxxxx> Thanks again for doing this - I think this is a very significant improvement and could allow other simplifications. NeilBrown
Attachment:
signature.asc
Description: PGP signature