#include <linux/kernel.h>
#include <linux/sched/task_stack.h>
#include <linux/module.h>
#include <linux/blkdev.h>
int blk_rq_append_bio(struct request *rq, struct bio **bio)
struct bio *orig_bio = *bio;
blk_queue_bounce(rq->q, bio);
blk_rq_bio_prep(rq->q, rq, *bio);
if (!ll_back_merge_fn(rq->q, rq, *bio)) {
rq->biotail->bi_next = *bio;
rq->__data_len += (*bio)->bi_iter.bi_size;
EXPORT_SYMBOL(blk_rq_append_bio);
static int __blk_rq_unmap_user(struct bio *bio)
if (bio_flagged(bio, BIO_USER_MAPPED))
ret = bio_uncopy_user(bio);
static int __blk_rq_map_user_iov(struct request *rq,
struct rq_map_data *map_data, struct iov_iter *iter,
gfp_t gfp_mask, bool copy)
struct request_queue *q = rq->q;
struct bio *bio, *orig_bio;