Thread (14 messages) 14 messages, 5 authors, 2016-08-31

Re: dm-crypt: Fix error with too large bios

From: Mike Snitzer <hidden>
Date: 2016-08-29 18:19:41
Also in: dm-devel

On Sat, Aug 27 2016 at 11:09am -0400,
Mikulas Patocka [off-list ref] wrote:

On Fri, 26 Aug 2016, Mike Snitzer wrote:
quoted
On Thu, Aug 25 2016 at  4:13pm -0400,
Jens Axboe [off-list ref] wrote:
quoted
On 08/25/2016 12:34 PM, Mikulas Patocka wrote:
quoted
Device mapper can't split the bio in generic_make_request - it frees the
md->queue->bio_split bioset, to save one kernel thread per device. Device
mapper uses its own splitting mechanism.

So what is the final decision? - should device mapper split the big bio or
should bcache not submit big bios?

I think splitting big bios in the device mapper is better - simply because
it is much less code than reworking bcache to split bios internally.

BTW. In the device mapper, we have a layer dm-io, that was created to work
around bio size limitations - it accepts unlimited I/O request and splits
it to several bios. When bio size limitations are gone, we could simplify
dm-io too.
The patch from Ming Lei was applied for 4.8 the other day.
See linux-block commit:
4d70dca4eadf2f block: make sure a big bio is split into at most 256 bvecs
http://git.kernel.dk/cgit/linux-block/commit/?h=for-linus&id=4d70dca4eadf2f95abe389116ac02b8439c2d16c
But this patch won't work for device mapper, blk_bio_segment_split is 
called from blk_queue_split and device mapper doesn't use blk_queue_split 
(it can't because it frees queue->bio_split).

We still need these two patches:
https://www.redhat.com/archives/dm-devel/2016-May/msg00211.html
https://www.redhat.com/archives/dm-devel/2016-May/msg00210.html
I'm left wondering whether it'd be better to revert commit dbba42d8a9e
("dm: eliminate unused "bioset" process for each bio-based DM device")

And also look for other areas of DM that could leverage the block core's
relatively new splitting capabilities.

Otherwise, we'll just be sprinking more BIO_MAX_PAGES-based splitting
code in DM targets because DM is so "special" that it doesn't need the
block core's splitting (even though it clearly would now benefit).

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