Merge tag 'io_uring-bio-cache.5-2021-08-30' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / include / linux / bio.h
index 7b5f65a..3d67d0f 100644 (file)
@@ -400,6 +400,7 @@ static inline struct bio *bio_next_split(struct bio *bio, int sectors,
 enum {
        BIOSET_NEED_BVECS = BIT(0),
        BIOSET_NEED_RESCUER = BIT(1),
+       BIOSET_PERCPU_CACHE = BIT(2),
 };
 extern int bioset_init(struct bio_set *, unsigned int, unsigned int, int flags);
 extern void bioset_exit(struct bio_set *);
@@ -408,6 +409,8 @@ extern int bioset_init_from_src(struct bio_set *bs, struct bio_set *src);
 
 struct bio *bio_alloc_bioset(gfp_t gfp, unsigned short nr_iovecs,
                struct bio_set *bs);
+struct bio *bio_alloc_kiocb(struct kiocb *kiocb, unsigned short nr_vecs,
+               struct bio_set *bs);
 struct bio *bio_kmalloc(gfp_t gfp_mask, unsigned short nr_iovecs);
 extern void bio_put(struct bio *);
 
@@ -657,6 +660,11 @@ struct bio_set {
        struct kmem_cache *bio_slab;
        unsigned int front_pad;
 
+       /*
+        * per-cpu bio alloc cache
+        */
+       struct bio_alloc_cache __percpu *cache;
+
        mempool_t bio_pool;
        mempool_t bvec_pool;
 #if defined(CONFIG_BLK_DEV_INTEGRITY)
@@ -673,6 +681,11 @@ struct bio_set {
        struct bio_list         rescue_list;
        struct work_struct      rescue_work;
        struct workqueue_struct *rescue_workqueue;
+
+       /*
+        * Hot un-plug notifier for the per-cpu cache, if used
+        */
+       struct hlist_node cpuhp_dead;
 };
 
 static inline bool bioset_initialized(struct bio_set *bs)