> + request_max_size = queue_max_bytes(bdev_get_queue(bio->bi_bdev)); Besides all the coding style problems this is simply not how the bio interface works. queue_max_bytes is a limit only available to the splitting routines and not to the upper layers submitting I/O. Please try to debug your scenarious a little more - just because a bio get split off it should not just turn into a request of it's own, but be merged with the next bio due to the plug. If that doesn't happen we do have a problem somewhere.