Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

block: add a bio_init_inline helper

Just a simpler wrapper around bio_init for callers that want to
initialize a bio with inline bvecs.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>

authored by

Christoph Hellwig and committed by
Jens Axboe
70a6f71b 9f7c02e0

+32 -27
+5 -2
block/bio.c
··· 462 462 cache->nr--; 463 463 put_cpu(); 464 464 465 - bio_init(bio, bdev, nr_vecs ? bio->bi_inline_vecs : NULL, nr_vecs, opf); 465 + if (nr_vecs) 466 + bio_init_inline(bio, bdev, nr_vecs, opf); 467 + else 468 + bio_init(bio, bdev, NULL, nr_vecs, opf); 466 469 bio->bi_pool = bs; 467 470 return bio; 468 471 } ··· 581 578 582 579 bio_init(bio, bdev, bvl, nr_vecs, opf); 583 580 } else if (nr_vecs) { 584 - bio_init(bio, bdev, bio->bi_inline_vecs, BIO_INLINE_VECS, opf); 581 + bio_init_inline(bio, bdev, BIO_INLINE_VECS, opf); 585 582 } else { 586 583 bio_init(bio, bdev, NULL, 0, opf); 587 584 }
+1 -2
block/blk-crypto-fallback.c
··· 167 167 bio = bio_kmalloc(nr_segs, GFP_NOIO); 168 168 if (!bio) 169 169 return NULL; 170 - bio_init(bio, bio_src->bi_bdev, bio->bi_inline_vecs, nr_segs, 171 - bio_src->bi_opf); 170 + bio_init_inline(bio, bio_src->bi_bdev, nr_segs, bio_src->bi_opf); 172 171 if (bio_flagged(bio_src, BIO_REMAPPED)) 173 172 bio_set_flag(bio, BIO_REMAPPED); 174 173 bio->bi_ioprio = bio_src->bi_ioprio;
+4 -4
block/blk-map.c
··· 157 157 bio = bio_kmalloc(nr_pages, gfp_mask); 158 158 if (!bio) 159 159 goto out_bmd; 160 - bio_init(bio, NULL, bio->bi_inline_vecs, nr_pages, req_op(rq)); 160 + bio_init_inline(bio, NULL, nr_pages, req_op(rq)); 161 161 162 162 if (map_data) { 163 163 nr_pages = 1U << map_data->page_order; ··· 264 264 bio = bio_kmalloc(nr_vecs, gfp_mask); 265 265 if (!bio) 266 266 return NULL; 267 - bio_init(bio, NULL, bio->bi_inline_vecs, nr_vecs, req_op(rq)); 267 + bio_init_inline(bio, NULL, nr_vecs, req_op(rq)); 268 268 } 269 269 return bio; 270 270 } ··· 326 326 bio = bio_kmalloc(nr_vecs, gfp_mask); 327 327 if (!bio) 328 328 return ERR_PTR(-ENOMEM); 329 - bio_init(bio, NULL, bio->bi_inline_vecs, nr_vecs, op); 329 + bio_init_inline(bio, NULL, nr_vecs, op); 330 330 if (is_vmalloc_addr(data)) { 331 331 bio->bi_private = data; 332 332 if (!bio_add_vmalloc(bio, data, len)) { ··· 392 392 bio = bio_kmalloc(nr_pages, gfp_mask); 393 393 if (!bio) 394 394 return ERR_PTR(-ENOMEM); 395 - bio_init(bio, NULL, bio->bi_inline_vecs, nr_pages, op); 395 + bio_init_inline(bio, NULL, nr_pages, op); 396 396 397 397 while (len) { 398 398 struct page *page;
+1 -2
drivers/md/bcache/debug.c
··· 115 115 check = bio_kmalloc(nr_segs, GFP_NOIO); 116 116 if (!check) 117 117 return; 118 - bio_init(check, bio->bi_bdev, check->bi_inline_vecs, nr_segs, 119 - REQ_OP_READ); 118 + bio_init_inline(check, bio->bi_bdev, nr_segs, REQ_OP_READ); 120 119 check->bi_iter.bi_sector = bio->bi_iter.bi_sector; 121 120 check->bi_iter.bi_size = bio->bi_iter.bi_size; 122 121
+1 -2
drivers/md/bcache/io.c
··· 26 26 struct bbio *b = mempool_alloc(&c->bio_meta, GFP_NOIO); 27 27 struct bio *bio = &b->bio; 28 28 29 - bio_init(bio, NULL, bio->bi_inline_vecs, 30 - meta_bucket_pages(&c->cache->sb), 0); 29 + bio_init_inline(bio, NULL, meta_bucket_pages(&c->cache->sb), 0); 31 30 32 31 return bio; 33 32 }
+1 -1
drivers/md/bcache/journal.c
··· 615 615 616 616 atomic_set(&ja->discard_in_flight, DISCARD_IN_FLIGHT); 617 617 618 - bio_init(bio, ca->bdev, bio->bi_inline_vecs, 1, REQ_OP_DISCARD); 618 + bio_init_inline(bio, ca->bdev, 1, REQ_OP_DISCARD); 619 619 bio->bi_iter.bi_sector = bucket_to_sector(ca->set, 620 620 ca->sb.d[ja->discard_idx]); 621 621 bio->bi_iter.bi_size = bucket_bytes(ca);
+1 -1
drivers/md/bcache/movinggc.c
··· 79 79 { 80 80 struct bio *bio = &io->bio.bio; 81 81 82 - bio_init(bio, NULL, bio->bi_inline_vecs, 82 + bio_init_inline(bio, NULL, 83 83 DIV_ROUND_UP(KEY_SIZE(&io->w->key), PAGE_SECTORS), 0); 84 84 bio_get(bio); 85 85 bio->bi_ioprio = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_IDLE, 0);
+1 -1
drivers/md/bcache/super.c
··· 2236 2236 __module_get(THIS_MODULE); 2237 2237 kobject_init(&ca->kobj, &bch_cache_ktype); 2238 2238 2239 - bio_init(&ca->journal.bio, NULL, ca->journal.bio.bi_inline_vecs, 8, 0); 2239 + bio_init_inline(&ca->journal.bio, NULL, 8, 0); 2240 2240 2241 2241 /* 2242 2242 * When the cache disk is first registered, ca->sb.njournal_buckets
+1 -1
drivers/md/bcache/writeback.c
··· 331 331 struct dirty_io *io = w->private; 332 332 struct bio *bio = &io->bio; 333 333 334 - bio_init(bio, NULL, bio->bi_inline_vecs, 334 + bio_init_inline(bio, NULL, 335 335 DIV_ROUND_UP(KEY_SIZE(&w->key), PAGE_SECTORS), 0); 336 336 if (!io->dc->writeback_percent) 337 337 bio->bi_ioprio = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_IDLE, 0);
+1 -1
drivers/md/dm-bufio.c
··· 1342 1342 use_dmio(b, op, sector, n_sectors, offset, ioprio); 1343 1343 return; 1344 1344 } 1345 - bio_init(bio, b->c->bdev, bio->bi_inline_vecs, 1, op); 1345 + bio_init_inline(bio, b->c->bdev, 1, op); 1346 1346 bio->bi_iter.bi_sector = sector; 1347 1347 bio->bi_end_io = bio_complete; 1348 1348 bio->bi_private = b;
+1 -1
drivers/md/dm-flakey.c
··· 441 441 if (!clone) 442 442 return NULL; 443 443 444 - bio_init(clone, fc->dev->bdev, clone->bi_inline_vecs, nr_iovecs, bio->bi_opf); 444 + bio_init_inline(clone, fc->dev->bdev, nr_iovecs, bio->bi_opf); 445 445 446 446 clone->bi_iter.bi_sector = flakey_map_sector(ti, bio->bi_iter.bi_sector); 447 447 clone->bi_private = bio;
+1 -1
drivers/md/raid1.c
··· 167 167 bio = bio_kmalloc(RESYNC_PAGES, gfp_flags); 168 168 if (!bio) 169 169 goto out_free_bio; 170 - bio_init(bio, NULL, bio->bi_inline_vecs, RESYNC_PAGES, 0); 170 + bio_init_inline(bio, NULL, RESYNC_PAGES, 0); 171 171 r1_bio->bios[j] = bio; 172 172 } 173 173 /*
+2 -2
drivers/md/raid10.c
··· 163 163 bio = bio_kmalloc(RESYNC_PAGES, gfp_flags); 164 164 if (!bio) 165 165 goto out_free_bio; 166 - bio_init(bio, NULL, bio->bi_inline_vecs, RESYNC_PAGES, 0); 166 + bio_init_inline(bio, NULL, RESYNC_PAGES, 0); 167 167 r10_bio->devs[j].bio = bio; 168 168 if (!conf->have_replacement) 169 169 continue; 170 170 bio = bio_kmalloc(RESYNC_PAGES, gfp_flags); 171 171 if (!bio) 172 172 goto out_free_bio; 173 - bio_init(bio, NULL, bio->bi_inline_vecs, RESYNC_PAGES, 0); 173 + bio_init_inline(bio, NULL, RESYNC_PAGES, 0); 174 174 r10_bio->devs[j].repl_bio = bio; 175 175 } 176 176 /*
+1 -1
drivers/target/target_core_pscsi.c
··· 861 861 bio = bio_kmalloc(nr_vecs, GFP_KERNEL); 862 862 if (!bio) 863 863 goto fail; 864 - bio_init(bio, NULL, bio->bi_inline_vecs, nr_vecs, 864 + bio_init_inline(bio, NULL, nr_vecs, 865 865 rw ? REQ_OP_WRITE : REQ_OP_READ); 866 866 bio->bi_end_io = pscsi_bi_endio; 867 867
+1 -1
fs/bcachefs/btree_io.c
··· 2084 2084 2085 2085 INIT_WORK(&scrub->work, btree_node_scrub_work); 2086 2086 2087 - bio_init(&scrub->bio, ca->disk_sb.bdev, scrub->bio.bi_inline_vecs, vecs, REQ_OP_READ); 2087 + bio_init_inline(&scrub->bio, ca->disk_sb.bdev, vecs, REQ_OP_READ); 2088 2088 bch2_bio_map(&scrub->bio, scrub->buf, c->opts.btree_node_size); 2089 2089 scrub->bio.bi_iter.bi_sector = pick.ptr.offset; 2090 2090 scrub->bio.bi_end_io = btree_node_scrub_endio;
+1 -1
fs/bcachefs/journal.c
··· 1634 1634 1635 1635 ja->bio[i]->ca = ca; 1636 1636 ja->bio[i]->buf_idx = i; 1637 - bio_init(&ja->bio[i]->bio, NULL, ja->bio[i]->bio.bi_inline_vecs, nr_bvecs, 0); 1637 + bio_init_inline(&ja->bio[i]->bio, NULL, nr_bvecs, 0); 1638 1638 } 1639 1639 1640 1640 ja->buckets = kcalloc(ja->nr, sizeof(u64), GFP_KERNEL);
+1 -1
fs/bcachefs/journal_io.c
··· 1071 1071 bio = bio_kmalloc(nr_bvecs, GFP_KERNEL); 1072 1072 if (!bio) 1073 1073 return bch_err_throw(c, ENOMEM_journal_read_bucket); 1074 - bio_init(bio, ca->disk_sb.bdev, bio->bi_inline_vecs, nr_bvecs, REQ_OP_READ); 1074 + bio_init_inline(bio, ca->disk_sb.bdev, nr_bvecs, REQ_OP_READ); 1075 1075 1076 1076 bio->bi_iter.bi_sector = offset; 1077 1077 bch2_bio_map(bio, buf->data, sectors_read << 9);
+1 -1
fs/bcachefs/super-io.c
··· 232 232 if (!bio) 233 233 return -BCH_ERR_ENOMEM_sb_bio_realloc; 234 234 235 - bio_init(bio, NULL, bio->bi_inline_vecs, nr_bvecs, 0); 235 + bio_init_inline(bio, NULL, nr_bvecs, 0); 236 236 237 237 kfree(sb->bio); 238 238 sb->bio = bio;
+1 -1
fs/squashfs/block.c
··· 231 231 bio = bio_kmalloc(page_count, GFP_NOIO); 232 232 if (!bio) 233 233 return -ENOMEM; 234 - bio_init(bio, sb->s_bdev, bio->bi_inline_vecs, page_count, REQ_OP_READ); 234 + bio_init_inline(bio, sb->s_bdev, page_count, REQ_OP_READ); 235 235 bio->bi_iter.bi_sector = block * (msblk->devblksize >> SECTOR_SHIFT); 236 236 237 237 for (i = 0; i < page_count; ++i) {
+5
include/linux/bio.h
··· 405 405 406 406 void bio_init(struct bio *bio, struct block_device *bdev, struct bio_vec *table, 407 407 unsigned short max_vecs, blk_opf_t opf); 408 + static inline void bio_init_inline(struct bio *bio, struct block_device *bdev, 409 + unsigned short max_vecs, blk_opf_t opf) 410 + { 411 + bio_init(bio, bdev, bio->bi_inline_vecs, max_vecs, opf); 412 + } 408 413 extern void bio_uninit(struct bio *); 409 414 void bio_reset(struct bio *bio, struct block_device *bdev, blk_opf_t opf); 410 415 void bio_chain(struct bio *, struct bio *);