Thread (21 messages) 21 messages, 8 authors, 2017-01-06

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

From: NeilBrown <hidden>
Date: 2016-07-12 02:55:35
Also in: dm-devel, linux-bcache, linux-raid, lkml

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@linbit.com>
Signed-off-by: Roland Kammerer <redacted>
Reviewed-by: NeilBrown <redacted>

Thanks again for doing this - I think this is a very significant
improvement and could allow other simplifications.

NeilBrown

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help