Merge tag 'for-5.4/io_uring-2019-09-15' of git://git.kernel.dk/linux-block
[sfrench/cifs-2.6.git] / block / blk.h
index 7814aa207153c0bd5cee7ea8f3b05745ee49e33a..de6b2e146d6eb64c0be5e9f0cdb80777897c179b 100644 (file)
@@ -51,8 +51,6 @@ struct blk_flush_queue *blk_alloc_flush_queue(struct request_queue *q,
                int node, int cmd_size, gfp_t flags);
 void blk_free_flush_queue(struct blk_flush_queue *q);
 
-void blk_rq_bio_prep(struct request_queue *q, struct request *rq,
-                       struct bio *bio);
 void blk_freeze_queue(struct request_queue *q);
 
 static inline void blk_queue_enter_live(struct request_queue *q)
@@ -101,6 +99,18 @@ static inline bool bvec_gap_to_prev(struct request_queue *q,
        return __bvec_gap_to_prev(q, bprv, offset);
 }
 
+static inline void blk_rq_bio_prep(struct request *rq, struct bio *bio,
+               unsigned int nr_segs)
+{
+       rq->nr_phys_segments = nr_segs;
+       rq->__data_len = bio->bi_iter.bi_size;
+       rq->bio = rq->biotail = bio;
+       rq->ioprio = bio_prio(bio);
+
+       if (bio->bi_disk)
+               rq->rq_disk = bio->bi_disk;
+}
+
 #ifdef CONFIG_BLK_DEV_INTEGRITY
 void blk_flush_integrity(void);
 bool __bio_integrity_endio(struct bio *);
@@ -154,14 +164,14 @@ static inline bool bio_integrity_endio(struct bio *bio)
 unsigned long blk_rq_timeout(unsigned long timeout);
 void blk_add_timer(struct request *req);
 
-bool bio_attempt_front_merge(struct request_queue *q, struct request *req,
-                            struct bio *bio);
-bool bio_attempt_back_merge(struct request_queue *q, struct request *req,
-                           struct bio *bio);
+bool bio_attempt_front_merge(struct request *req, struct bio *bio,
+               unsigned int nr_segs);
+bool bio_attempt_back_merge(struct request *req, struct bio *bio,
+               unsigned int nr_segs);
 bool bio_attempt_discard_merge(struct request_queue *q, struct request *req,
                struct bio *bio);
 bool blk_attempt_plug_merge(struct request_queue *q, struct bio *bio,
-                           struct request **same_queue_rq);
+               unsigned int nr_segs, struct request **same_queue_rq);
 
 void blk_account_io_start(struct request *req, bool new_io);
 void blk_account_io_completion(struct request *req, unsigned int bytes);
@@ -202,15 +212,17 @@ static inline int blk_should_fake_timeout(struct request_queue *q)
 }
 #endif
 
-int ll_back_merge_fn(struct request_queue *q, struct request *req,
-                    struct bio *bio);
-int ll_front_merge_fn(struct request_queue *q, struct request *req, 
-                     struct bio *bio);
+void __blk_queue_split(struct request_queue *q, struct bio **bio,
+               unsigned int *nr_segs);
+int ll_back_merge_fn(struct request *req, struct bio *bio,
+               unsigned int nr_segs);
+int ll_front_merge_fn(struct request *req,  struct bio *bio,
+               unsigned int nr_segs);
 struct request *attempt_back_merge(struct request_queue *q, struct request *rq);
 struct request *attempt_front_merge(struct request_queue *q, struct request *rq);
 int blk_attempt_req_merge(struct request_queue *q, struct request *rq,
                                struct request *next);
-void blk_recalc_rq_segments(struct request *rq);
+unsigned int blk_recalc_rq_segments(struct request *rq);
 void blk_rq_set_mixed_merge(struct request *rq);
 bool blk_rq_merge_ok(struct request *rq, struct bio *bio);
 enum elv_merge blk_try_merge(struct request *rq, struct bio *bio);