Merge tag 'for-linus-20180608' of git://git.kernel.dk/linux-block
[linux-2.6-block.git] / include / linux / bio.h
index 810a8bee8f859f48154aeefd3c3d1ca9efba2848..f08f5fe7bd08208eca43a6ed08f5b168d8af7091 100644 (file)
@@ -127,6 +127,11 @@ static inline void *bio_data(struct bio *bio)
        return NULL;
 }
 
+static inline bool bio_full(struct bio *bio)
+{
+       return bio->bi_vcnt >= bio->bi_max_vecs;
+}
+
 /*
  * will die
  */
@@ -417,6 +422,7 @@ enum {
 extern int bioset_init(struct bio_set *, unsigned int, unsigned int, int flags);
 extern void bioset_exit(struct bio_set *);
 extern int biovec_init_pool(mempool_t *pool, int pool_entries);
+extern int bioset_init_from_src(struct bio_set *bs, struct bio_set *src);
 
 extern struct bio *bio_alloc_bioset(gfp_t, unsigned int, struct bio_set *);
 extern void bio_put(struct bio *);
@@ -474,6 +480,10 @@ void bio_chain(struct bio *, struct bio *);
 extern int bio_add_page(struct bio *, struct page *, unsigned int,unsigned int);
 extern int bio_add_pc_page(struct request_queue *, struct bio *, struct page *,
                           unsigned int, unsigned int);
+bool __bio_try_merge_page(struct bio *bio, struct page *page,
+               unsigned int len, unsigned int off);
+void __bio_add_page(struct bio *bio, struct page *page,
+               unsigned int len, unsigned int off);
 int bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter);
 struct rq_map_data;
 extern struct bio *bio_map_user_iov(struct request_queue *,