On Wed, Sep 06, 2017 at 12:51:03PM +0200, Javier González wrote: > In pblk, buffers forming bios can be allocated on physically contiguous > or virtually contiguous memory. For physically contiguous memory, we > already use the bio_map_kern helper funciton, however, for virtually > contiguous memory, we from the bio manually. This makes the code more > complex, specially on the completion path, where mapped pages need to be > freed. > > Instead, use bio_copy_kern, which does the same and at the same time > simplifies the completion path. Nope. You want to loop over vmalloc_to_page and call bio_add_page for each page, after taking care of virtually tagged caches instead of this bounce buffering. And you really want to allocate the request first and only then map the data to the request, as said before.