From 9a82c0797e081b673edea9e9ad16cddf29ca8f6e Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Wed, 11 Aug 2021 11:54:06 +0200 Subject: [PATCH] block: use the percpu bio cache in __blkdev_direct_IO Use bio_alloc_iocb to dip into the percpu cache of bios when the caller asks for it. Signed-off-by: Christoph Hellwig --- fs/block_dev.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/fs/block_dev.c b/fs/block_dev.c index e1c14c2e0504..a2c3d11eda5e 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -385,8 +385,7 @@ static ssize_t __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter, (bdev_logical_block_size(bdev) - 1)) return -EINVAL; - bio = bio_alloc_bioset(GFP_KERNEL, nr_pages, &blkdev_dio_pool); - + bio = bio_alloc_iocb(iocb, nr_pages, &blkdev_dio_pool); dio = container_of(bio, struct blkdev_dio, bio); dio->is_sync = is_sync = is_sync_kiocb(iocb); if (dio->is_sync) { @@ -513,7 +512,9 @@ blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter) static __init int blkdev_init(void) { - return bioset_init(&blkdev_dio_pool, 4, offsetof(struct blkdev_dio, bio), BIOSET_NEED_BVECS); + return bioset_init(&blkdev_dio_pool, 4, + offsetof(struct blkdev_dio, bio), + BIOSET_NEED_BVECS | BIOSET_PERCPU_CACHE); } module_init(blkdev_init); -- 2.50.1