summaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorMike Snitzer <snitzer@kernel.org>2022-03-24 21:35:25 +0100
committerJens Axboe <axboe@kernel.dk>2022-04-18 00:49:40 +0200
commitb53f3dcd705e52a07bd0311870dbfb6842e88c91 (patch)
tree0178a6d8ffcda464a458ae3f6ba7a21b337c01f2 /block
parentblock: allow using the per-cpu bio cache from bio_alloc_bioset (diff)
downloadlinux-b53f3dcd705e52a07bd0311870dbfb6842e88c91.tar.xz
linux-b53f3dcd705e52a07bd0311870dbfb6842e88c91.zip
block: allow use of per-cpu bio alloc cache by block drivers
Refine per-cpu bio alloc cache interfaces so that DM and other block drivers can properly create and use the cache: DM uses bioset_init_from_src() to do its final bioset initialization, so must update bioset_init_from_src() to set BIOSET_PERCPU_CACHE if %src bioset has a cache. Also move bio_clear_polled() to include/linux/bio.h to allow users outside of block core. Signed-off-by: Mike Snitzer <snitzer@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de> Link: https://lore.kernel.org/r/20220324203526.62306-3-snitzer@kernel.org Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block')
-rw-r--r--block/bio.c2
-rw-r--r--block/blk.h6
2 files changed, 2 insertions, 6 deletions
diff --git a/block/bio.c b/block/bio.c
index c67f47c6cc8c..643a3a052c7e 100644
--- a/block/bio.c
+++ b/block/bio.c
@@ -1767,6 +1767,8 @@ int bioset_init_from_src(struct bio_set *bs, struct bio_set *src)
flags |= BIOSET_NEED_BVECS;
if (src->rescue_workqueue)
flags |= BIOSET_NEED_RESCUER;
+ if (src->cache)
+ flags |= BIOSET_PERCPU_CACHE;
return bioset_init(bs, src->bio_pool.min_nr, src->front_pad, flags);
}
diff --git a/block/blk.h b/block/blk.h
index 0d33e4ca2c52..4ea5167dc339 100644
--- a/block/blk.h
+++ b/block/blk.h
@@ -450,12 +450,6 @@ extern struct device_attribute dev_attr_events;
extern struct device_attribute dev_attr_events_async;
extern struct device_attribute dev_attr_events_poll_msecs;
-static inline void bio_clear_polled(struct bio *bio)
-{
- /* can't support alloc cache if we turn off polling */
- bio->bi_opf &= ~(REQ_POLLED | REQ_ALLOC_CACHE);
-}
-
long blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg);
long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg);