]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
dm crypt: use bio_add_page()
authorMing Lei <tom.leiming@gmail.com>
Sat, 29 Oct 2016 08:08:06 +0000 (16:08 +0800)
committerMike Snitzer <snitzer@redhat.com>
Mon, 21 Nov 2016 14:51:58 +0000 (09:51 -0500)
Use bio_add_page(), the standard interface for adding a page to a bio,
rather than open-coding the same.

It should be noted that the 'clone' bio that is allocated using
bio_alloc_bioset(), in crypt_alloc_buffer(), does _not_ set the
bio's BIO_CLONED flag.  As such, bio_add_page()'s early return for true
bio clones (those with BIO_CLONED set) isn't applicable.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-crypt.c

index a2768835d3948aa8af9821601fb9c25e1768a893..4999c7497f9542716c1a61454970310e8442adae 100644 (file)
@@ -994,7 +994,6 @@ static struct bio *crypt_alloc_buffer(struct dm_crypt_io *io, unsigned size)
        gfp_t gfp_mask = GFP_NOWAIT | __GFP_HIGHMEM;
        unsigned i, len, remaining_size;
        struct page *page;
-       struct bio_vec *bvec;
 
 retry:
        if (unlikely(gfp_mask & __GFP_DIRECT_RECLAIM))
@@ -1019,12 +1018,7 @@ retry:
 
                len = (remaining_size > PAGE_SIZE) ? PAGE_SIZE : remaining_size;
 
-               bvec = &clone->bi_io_vec[clone->bi_vcnt++];
-               bvec->bv_page = page;
-               bvec->bv_len = len;
-               bvec->bv_offset = 0;
-
-               clone->bi_iter.bi_size += len;
+               bio_add_page(clone, page, len, 0);
 
                remaining_size -= len;
        }