Re: [dm-devel] [PATCH v2 1/1] block: fix blk_queue_split() resource exhaustion

From: NeilBrown
Date: Mon Jul 11 2016 - 22:55:38 EST


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