On Tue, Mar 29, 2016 at 03:01:10PM -0700, Shaohua Li wrote: > The problem is bcache allocates a big bio (with bio_alloc). The bio is > split with blk_queue_split, but it isn't split to small size because > queue limit. the bio is cloned later in md, which uses bio_alloc_bioset. > bio_alloc_bioset itself can't allocate big size bio.
bcache should be fixed to not allocate larger than allowed bios then. And handling too large arguments to bio_alloc_bioset is still useful to avoid the checks in the callers and make it robust.