From: Ming Lei Date: Fri, 15 Feb 2019 11:13:18 +0000 (+0800) Subject: bcache: avoid to use bio_for_each_segment_all() in bch_bio_alloc_pages() X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=2e1f4f4d2481d8bf111904c3e45fc0c4c94bf76e;p=openwrt%2Fstaging%2Fblogic.git bcache: avoid to use bio_for_each_segment_all() in bch_bio_alloc_pages() bch_bio_alloc_pages() is always called on one new bio, so it is safe to access the bvec table directly. Given it is the only kind of this case, open code the bvec table access since bio_for_each_segment_all() will be changed to support for iterating over multipage bvec. Acked-by: Coly Li Reviewed-by: Omar Sandoval Reviewed-by: Christoph Hellwig Signed-off-by: Ming Lei Signed-off-by: Jens Axboe --- diff --git a/drivers/md/bcache/util.c b/drivers/md/bcache/util.c index 20eddeac1531..62fb917f7a4f 100644 --- a/drivers/md/bcache/util.c +++ b/drivers/md/bcache/util.c @@ -270,7 +270,11 @@ int bch_bio_alloc_pages(struct bio *bio, gfp_t gfp_mask) int i; struct bio_vec *bv; - bio_for_each_segment_all(bv, bio, i) { + /* + * This is called on freshly new bio, so it is safe to access the + * bvec table directly. + */ + for (i = 0, bv = bio->bi_io_vec; i < bio->bi_vcnt; bv++, i++) { bv->bv_page = alloc_page(gfp_mask); if (!bv->bv_page) { while (--bv >= bio->bi_io_vec)