diff options
author | Christoph Hellwig <hch@lst.de> | 2021-08-12 09:05:52 -0600 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2021-08-23 13:45:00 -0600 |
commit | 01cfa28af486c9df3775232f10c3dd7ba2e88318 (patch) | |
tree | b3f85a0c3e53bd0bb8218b952d4f2380e90175ac /fs/block_dev.c | |
parent | 394918ebb889f99d89db6843bcc93279b2b745f9 (diff) | |
download | linux-01cfa28af486c9df3775232f10c3dd7ba2e88318.tar.gz linux-01cfa28af486c9df3775232f10c3dd7ba2e88318.tar.bz2 linux-01cfa28af486c9df3775232f10c3dd7ba2e88318.zip |
block: use the percpu bio cache in __blkdev_direct_IO
Use bio_alloc_kiocb to dip into the percpu cache of bios when the
caller asks for it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'fs/block_dev.c')
-rw-r--r-- | fs/block_dev.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index 9ef4f1fc2cb0..3c7fb7106713 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -385,7 +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_kiocb(iocb, nr_pages, &blkdev_dio_pool); dio = container_of(bio, struct blkdev_dio, bio); dio->is_sync = is_sync = is_sync_kiocb(iocb); @@ -513,7 +513,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); |